资源预览内容
第1页 / 共61页
第2页 / 共61页
第3页 / 共61页
第4页 / 共61页
第5页 / 共61页
第6页 / 共61页
第7页 / 共61页
第8页 / 共61页
第9页 / 共61页
第10页 / 共61页
亲,该文档总共61页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1,第4章 数组和字符串,掌握 Java 中的 数组概念、 声明、 创建、初始化 与 使用; 熟练掌握 Java 的数组编程方法; 掌握 Java 中字符串的概念; 熟练掌握 Java 中 String 类、StringBuffer 类中的有关方法应用; 了解向量的声明、添加、修改、删除等操作。,教学目的要求,2,常见编程错误 与在其他编程语言(例如C或C+)中声明数组不同, Java 数组的元素个数不能在数组名后的方括号中定义, 否则将导致语法错误。如, 声明“int c12;”,会产生语法错误。,Common Programming Error 5.2 Unlike C or C+ the number of elements in the array is never specified in the square brackets after the array name in a declaration. The declaration int c12; causes a syntax error.,3,数组 array,是一组连续的存储单元, 且每个成员均有相同的名称和类型。 An array is a group of contiguous memory locations that all have the same name and the same type. 带下标的数组名是一个左值,可放在赋值语句的左边,以便将一个新值放入数组元素中。 A subscripted array name is an lvalue it can be used on the left side of an assignment to place a new value into an array element.,4,声明数组和给数组分配空间 Declaring and Allocating Arrays,int c = new int12; int c; C = new int12; String b = new String100, x=new String27; double array1 = new double10, array2 = new double20;,5,int a = new int50; / a 数组创建之后的内存模式,a0= 25;,存入数值25,25,6,String student = new String52; / student 数组创建之后的内存模式,student0= new String(“张倩倩”);,7,4.1 数组,一维数组 声明一维数组有两种格式: 格式一:数组元素类型 数组名 格式二:数组元素类型 数组名 为数组分配内存空间的格式如下: 数组名 = new 数组元素的类型数组的长度; 数组的初始化 创建数组后,系统会给每个元素一个默认的值,也可以在声明数组的同时给数组一个初始值,称之为初始化。例如: int num = 2, 5, 4, 1 ;,8,4.1 数组,一维数组 数组的使用 数组的访问,比如:student 0=18 数组的复制,例如: int num = 9, 8, 3, 0, 2; int numCopy =num; numCopy2 = 9; 一维数组中元素的个数:数组名.length,9,一维数组应用举例,例4.1逐个输入并计算10个学生的平均成绩。,import java.io.*; public class Li4_01 public static void main(String args) throws IOException int k, count=10; /count为学生的个数 float score=new floatcount; /学生的成绩数组 float floatSum=0.0f, floatAver=0.0f; /学生的总成绩和平均成绩 String str; BufferedReader buf=new BufferedReader(new InputStreamReader( System.in) ); for(k=0;kcount;k+) System.out.print(“请输入第“+(k+1)+“个学生的成绩:“); str=buf.readLine(); scorek=Float.parseFloat(str); floatSum+=scorek; floatAver=floatSum/count; System.out.println(“这“+count+“个同学的平均成绩是:“+floatAver); ,10,The Pascaline The first calculating machine, invented by Blaise Pascal in 1640.,Yves Serra Copyright, 1997,11,Solution by 2-Dimension Array,a06=1; for ( For(,aij=ai-1j-1+ai-1j+1;,12,遍历一维数组,public class T public static void main(String args) int a = 1,2,3,4,5,6,7,8,9,10; int sum = 0; for (int i =0; ia.length;i+) sum += ai; System.out.println(“数组a中所有元素数值的总和: “ + sum); ,数组a中所有元素数值的总和: 55,13,遍历一维数组,public class T public static void main(String args) int a = 1,2,3,4,5,6,7,8,9,10; int sum = 0; for (int i =0; ia.length;i+) sum += ai; System.out.println(“数组a中所有元素数值的总和: “ + sum); ,for(int aa:a) 读作: 数组 a 里的整形变量 aa,自JDK1.5,可改写为:,数组a中所有元素数值的总和: 55,14,The for-each and equivalent for statements have these forms. The two basic equivalent forms are given, depending one whether it is an array or an Iterable that is being traversed. In both cases an extra variable is required, an index for the array and an iterator for the collection.,When you see the colon (:) read it as “in.” The loop above reads as “for each type var in c.”,15,public class Foreach0 public static void main(String args) String b = “西施“,“王昭君“,“貂禅“,“杨贵妃“; for (int i=0; i4; i+) System.out.println(“曾经青史留名:“ + bi); ,曾经青史留名:西施 曾经青史留名:王昭君 曾经青史留名:貂禅 曾经青史留名:杨贵妃,16,public class Foreach1 public static void main(String args) String belle = new String4; belle0 = “西施“; belle1 = “王昭君“; belle2 = “貂禅“; belle3 = “杨贵妃“; for (String b : belle) System.out.println(“曾经青史留名:“ + b); ,曾经青史留名:西施 曾经青史留名:王昭君 曾经青史留名:貂禅 曾经青史留名:杨贵妃,17,public class ForTest2 public static void main(String args) String arr = “伦理“, “创新“, “品质“, “绩效“, “成功“,“学院“,“成功“,“学园“, “河南“,“巩义“,“洛河“,“文化“, “Ethics“,“Creation“,“Quality“,“Performance“,; for(String a : arr) for(String b : a) System.out.println(b); System.out.println(); ,伦理 创新 品质 绩效 成功 学院 成功 学园 河南 巩义 洛河 文化 Ethics Creation Quality Performance,18,4.1 数组,多维数组 声明二维数组有两种格式: 数组元素类型 数组名; 数组元素类型 数组名; 二维数组的初始化 数组名 = new 数组元素的类型 数组的行数数组的列数; int a = new int2040; 类型 数组名=初值表1,初值表2, 初值表n,; int b = 1,2,3,4,5,6,7,8,9,19, 二维数组的初始化方法 数组名.length 或 数组名行号.length 例: int a; a = new int5; for (i=0;i5;i+) ai= new int10;,20,public class T public static void main(String args) int a= 1,2,3,4,5,6,7,8,9,10; int sum=0; System.out.println(“第一行的长度: “ + a0.length); System.out.println(“第二行的长度: “ + a1.length); System.out.println(“第三行的长度: “ + a2.length); for (int i=0;ia.length;i+) for (int j=0; jai.length;j+) sum += aij; System.out.println(“二维数组a中所有元素数值的总和:“ + sum); sum =0; ,第一行的长度: 5 第二行的长度: 2 第三行的长度: 3 二维数组a中所有元素数值的总和:55,/在Java的二维数组,允许各行有不同的元素个数,21,4.1 数组: 多维数组,教材例4.3 : 任意二维数组转置,public class Li4_03 public static void main(String args) int j,k,temp, aH=3, aL=4, bH, bL; bH=aL;/b数组的行数,应该等于a数组的列数 bL=aH;/b数组的列数,应该等于a数组的行数 int a=new intaHaL; int b=ne
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号