java第五章数组
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实例5-3 检测回文串
【实例描述】 利用String类的常用方法检测字符串是否为回文串。
【技术要点】 对于一个字符串,如果从前向后和从后向前读都一样,则称 为回文串。例如:单词mom、dad和noon等都是回文串。 判断是否为回文串的方法是:先判断该字符串的第一个字符 和最后一个字符是否相等,如果相等,检查第二个字符和倒数第 二个字符是否相等。这个过程一直进行,直到出现不匹配的情况 或者串中所有的字符都检查完毕。
四、数组作为方法的参数
补充知识:
方法中参数的传递: (1)数值传递 (2)地址传递(引用传递)
例:编写一个方法,求一组数的最大值、最小值 和平均值。
public class Exam_2 { public static void main(String args[]) { double a[] = { 1.1, 3.4, -9.8, 10 }; // 定义数组并初始化 //定义存储最大值、最小值和平均值的数组,将数组a作为方法的实参 double b[] = max_min_ave(a); for (int i = 0; i < b.length; i++) // 输出最大值、最小值与平均值 System.out.println("b[" + i + "]=" + b[i]); } //取得数组的最大值、最小值和平均值的方法,返回值为数组类型 static double[] max_min_ave(double a[]) { double res[] = new double[3]; double max = a[0], min = a[0], sum = a[0]; for (int i = 0; i < a.length; i++) { if (max < a[i]) max = a[i]; // 取得数组中的最大值 if (min > a[i]) min = a[i]; // 取得数组中的最小值 sum += a[i]; // 取得数组中元素的总和 } res[0] = max; res[1] = min; res[2] = sum / a.length; // 得到数组元素的平均值 return res; // 返回数组引用 } }
class Student { String name; int age; public Student(String name, int age) { this.name = name; this.age = age; } }
定义与引用学生对象数组
public class Exam_1 { public static void main(String args[]) { Student[] stu = new Student[3]; stu[0] = new Student("lily", 20); stu[1] = new Student("lucy", 18); stu[2] = new Student("john", 21); for (int i = 0; i < stu.length; i++) { System.out.println(stu[i].name + " "+stu[i].age); } } }
String s=new String("I am a good cat"); s.indexOf('a'); //值是2 s.lastIndexOf('a'); //值是13
(5)字符串的截取——字符串.substring(起始位置,[终止位置])
注:不包括终止位置的字符。
(6)字符串转换为大小写 字符串.toLowerCase(); 字符串.toUpperCase(); (7)字符串的替换
二、多维数组
1.二维数组的声明
一般格式: 数据类型[][] 数据类型 数据类型[] 数组名; 数组名[][]; 数组名[];
例如:int[][] a; int a[][]; int[] a[];
2.二维数组的初始化
(1)静态初始化 例如:int a[][] ={{34,25},{100,43},{1000,453,39}}; (2)动态初始化 ① 直接方式 ② 逐级方式
五、字符串的创建与使用方法
1.String类
(1)声明字符串变量 String s; (2)创建字符串
直接赋值。例如:String s1="hello"; 由一个字符串创建另一个字符串。 例如:String s1 = "hello";String s2 = new String(s1); 由字符型数组来创建字符串。 例如:char[] c = {'a','b','c'}; String s = new String(c);
实例5-2 选择题评分
【实例描述】 编写程序,给选择题进行评分。假设有5个学生和10个问题,学 生对问题给出的答案存储在二维数组中,每行记录一名学生对所有问 题的答案。统计正确答案的个数并将其显示出来。 【技术要点】
学生的答案存储在一个二维数组中,如下所示。 学生给出的答案
0 学生0 学生1 学生2 学生3 学生4 A D E C A 1 B B D B B 2 A A D A D 3 C B A E C 4 C C C D C 5 D A B C D 6 E E E E E 7 E E E E E 8 A A A A A 9 D D D D D
字符串.replace(旧字符或字符串,新字符或新字符串): 字符串.replaceAll(旧串,新串): 字符串.trim():
wenku.baidu.com
3.数字字符串与相应数值的转换
(1)字符串转换为数值 通过调用java.lang包中Integer类的类方法public static int parseInt(String s),可以将数字格式的字符串,如“1234”,转 化为int型数据。 例如:String s="1234";int x=Integer.parseInt(s); //x值是1234 类似地,可使用java.lang包中Byte、Short、Long、Double类 的类方法,将数字格式的字符串转化为相应的基本数据类型。 (2)数值转换为字符串 使用String类的valueOf方法可将byte、int、long、float、 double等类型的数值转换为字符串。 例如:String s=String.valueOf(7894.4467); float x=345.6675f; String s1=String.valueOf(x);
package Chapter5; import java.util.Scanner; public class CheckString { public static void main(String[] args) { String checkStr = null; System.out.println("请输入要检测的字符串:"); Scanner in = new Scanner(System.in); checkStr = in.nextLine(); // 存储用户输入的字符串 if (isPaildrome(checkStr)) { // 判断输入的字符串是否为回文串 System.out.println(checkStr + "是回文串。"); } else { System.out.println(checkStr + "不是回文串。"); } } private static boolean isPaildrome(String check) { int low = 0; // 定义首字符的索引 int high = check.length() - 1; // 定义尾子符的索引 while (low < high) { // 检测首尾两个字符是否相等 if (check.charAt(low) != check.charAt(high)) return false; low++; high--; } return true; } }
2.常用的字符串方法
(1)获取字符串的长度——length(字符串) (2)字符串的连接——字符串1.concat(字符串2)(同字符串1+字符串2) (3)字符串的比较
①字符串1.equals(字符串2)——返回值true,false
②字符串1.equalsIgnoreCase(字符串2) ③字符串1.compareTo(字符串2)
4、字符串与字符数组和字节数组之间的转换
借助字符串类String的构造方法和成员方法,我们可以方便 地将字节数组和字符数组转换为字符串,或者将字符串转换为 字节数组或字符数组。
// 声明字节数组和字符数组 byte[] b = { 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75 }; char[] c = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k' }; // 声明字符串对象 String str; // 将字节数组转换为字符串 str = new String(b); // 将字节数组中指定位置(5)开始的指定长度(20)的字节转换为字符串 str = new String(b, 2, 8); // 将字符数组转换为字符串 str = new String(c); // 将字符数组中指定位置(5)开始的指定长度(20)的字符转换为字符串 str = new String(c, 2, 8); // 将字符串转换为字节数组 b = str.getBytes(); // 将字符串转换为字符数组 c = str.toCharArray();
第五章 数组和字符串
一、一维数组的声明与使用方法
1.一维数组的声明
一般格式: (1)数据类型[] (2)数据类型 一、一维数组
数组名; 数组名[];
2.一维数组的初始化
(1)静态初始化 数据类型[] 数组名= {元素1初值,元素2初值,…}; (2)动态初始化(利用new运算符为数组分配内存空间) 数据类型[] 数组名; 数组名= new 数据类型[数组长度]; 提示:数组的声明和初始化也可以放在一条语句中完成,例
问题的答案
0 正确答案 D 1 B 2 D 3 C 4 C 5 D 6 A 7 E 8 A 9 D
三、对象数组
1.什么是对象数组?
数组里的每个元素都是类的对象。 2. 对象数组的声明 类名 对象数组名[] = new 类名[数组长度];
类名[] 对象数组名 = new 类名[数组长度];
例如:定义一个学生类:Student:
如:int[] salary=new int[4]。
3.一维数组的使用
语法格式: 数组名[数组下标]; 数组下标是整数或表达式,从0开始到“数组长度-1” length属性表示数组的长度。
实例5-1 冒泡排序
【实例描述】 采用冒泡排序算法将10个整数按照从小到大的顺序排列。
【技术要点】 冒泡排序是一种简单的交换排序。其基本思路是,从数列左 边开始扫描待排序的元素,在扫描过程中依次对相邻元素进行比 较,将较大值元素后移。每经过一轮排序后,值最大的元素将移 到末尾,此时记下该元素的位置,下一轮排序只需比较到此位置 即可。如此重复,直到比较最后两个元素。 对n个元素冒泡排序时,总共需要进行n-1轮。第1轮需要比较 n-1次,第2轮需要比较n-2次,第i轮需要比较n-i次,最后一轮需要 比较1次。
•字符串1=字符串2——返回值0 •字符串1〉字符串2——返回正值 •字符串1〈字符串2——返回负值
(4)字符或字符串的检索的方法
字符串1.indexOf(字符或字符串2) 返回字符串1中首次出现字符或字符串2的位置(没找到为-1) 字符串1.lastIndexOf(字符或字符串2) 返回最后出现字符或字符串2的位置(没找到为-1) 例如: String s=new String("I am a good cat"); s.indexOf("a"); //值是2 s.lastIndexOf("a"); //值是13
例如:int a[][] = new int [3][2]; 例如:int a[][] = new int [2][]; a[0]= new int[1]; a[1]= new int[2];
3.二维数组的长度表示 (1)数组名.length:表示第一维的长度(行数) (2)数组名[n].length表示第n-1行的元素个数。(列数) 4.二维数组的使用 数组名[行号][列号];
注:行号从0开始到到行数-1结束,列号从0开始到列数-1结束
5.遍历该二维数组a[][]每个元素
for(int i=0;i<a.length;i++){ for(int j=0;j<a[i].length;j++){ System.out.print(a[i][j]+" "); } System.out.println(); }