Java语言程序设计 作者 李尊朝 苏军 第5章

上传人:E**** 文档编号:89390191 上传时间:2019-05-24 格式:PPT 页数:58 大小:330KB
返回 下载 相关 举报
Java语言程序设计 作者 李尊朝 苏军 第5章_第1页
第1页 / 共58页
Java语言程序设计 作者 李尊朝 苏军 第5章_第2页
第2页 / 共58页
Java语言程序设计 作者 李尊朝 苏军 第5章_第3页
第3页 / 共58页
Java语言程序设计 作者 李尊朝 苏军 第5章_第4页
第4页 / 共58页
Java语言程序设计 作者 李尊朝 苏军 第5章_第5页
第5页 / 共58页
点击查看更多>>
资源描述

《Java语言程序设计 作者 李尊朝 苏军 第5章》由会员分享,可在线阅读,更多相关《Java语言程序设计 作者 李尊朝 苏军 第5章(58页珍藏版)》请在金锄头文库上搜索。

1、第5章,数组,在实际应用中,经常需要处理具有相同性质的一批数据。为此,在Java中还引入了数组,即用一个变量表示一组相同性质的数据。,5.1 一维数组 5.2 多维数组 5.3 数组的基本操作 5.4 数组应用举例 5.5 数组参数 5.6 字符串,5.1 一维数组,数组是用一个变量名表示一组数据,每个数据称为数组元素,每个元素通过下标来区分。如果用一个下标能确定数组中的不同元素,这种数组称为一维数组。,1 一维数组的声明,一维数组声明的格式为: 类型标识符 数组名 或 类型标识符 数组名 类型标识符指定每个元素的数据类型。,例如,要表示学生的成绩(整数),可以声明数组score: int s

2、core ; 该声明表示数组的名字为score,每个元素为整数。 要表示学生的体重(浮点数),可以声明元素的数据类型为float的数组weight,其声明如下: float weight;,2 一维数组的初始化,要让系统为数组分配存储空间,必须指出数组元素的个数,该工作在数组初始化时进行。 用new初始化数组 先声明数组再初始化 数组名= new 类型标识符元素个数 元素个数通过整型常量来表示。要表示10个学生的成绩(整数),可以先声明元素的数据类型为int的数组score,再用new运算符初始化该数组。 int score; score=new int10;,数组中各元素通过下标来区分,下标

3、的最小值为0,最大值比元素个数少1。score的 10个元素分别为score0,score1,score2,score3,score9。系统为该数组的10个元素分配存储空间,形式如下表所示:,例:要计算100个学生的平均成绩,可以使用以下的程序段: float sum; int i; int score ; score = new int100; /* 输入数组各元素的值 */ sum=0; for ( i=0; i100; i+) sum=sum+scorei; sum=sum/100;,声明的同时进行初始化 可以用1条语句声明并初始化数组,即将上面的2条语句合并为一条语句。其格式如下: 类

4、型标识符 数组名 = new 类型标识符元素个数 或 类型标识符 数组名= new 类型标识符元素个数 例如,要表示10个学生的学号,可以按以下方式声明并初始化数组no: int no = new int10;,赋初值初始化数组 可以在声明数组的同时,给数组元素赋初值。所赋初值的个数决定数组元素的数目。其格式如下: 类型标识符 数组名 = 初值表 初值表是用逗号隔开的初始值。 例如: int score =65,34,78,81,56,92,56,87, 90, 77;,5.2 多维数组,1 二维数组的声明 二维数组的声明方式与一维数组类似,只是要给出两对方括号。二维数组声明形式如下: 类型标

5、识符 数组名 或 类型标识符 数组名 例如,要表示每个数据为整型数的行列式,可以声明 如下二维数组: int a ;,2 二维数组的初始化,用new初始化二维数组 先声明数组再初始化 数组名= new 类型标识符行数列数 例如: int a; a=new int34;,声明的同时进行初始化 类型标识符 数组名 = new 类型标识符行数列数 或 类型标识符 数组名=new 类型标识符行数列数 int a=new int34; 数组中各元素通过两个下标来区分,每个下标的最小值为0,最大值分别比行数或列数少1。a的12个元素分别为a00, a01, a02, a03, a10, a11,a23。,

6、系统为该数组a的12个元素分配存储空间,形式如表所示:,赋初值初始化数组 其格式如下: 类型标识符 数组名 = 初值表,初值表,初值表 int grade = 65,34, 78, 81, 56, 92, 56, 87,90, 92, 69, 75;,数组grade共有12个元素,元素grade 00,grade 01,grade 02,grade 10,grade 32的初始值分别为65,34,78,75,如表所示:,5.3 数组的基本操作,数组的引用 对数组的应用通常是对其元素的引用。 int age=new int3; age0=25; age2=2+age0 ; 数组的复制 int a

7、=new int6; int b=1,2,3,4,5,6; for(int i=0;i6;i+) ai=bi; 或 a=b;,例-数组复制,int c,d, e,i, j; c=new int33; d=new int33; e=new int33; for(i=0;i3; i+) for (j=0; j3; j+) dij=i+j; cij=dij; e=d;,数组的输出 数组的输出通常是逐个元素结合循环语句实现的。 int a=new int6; for(int i=0;i6;i+) ai=i; System.out.println(ai); ,例-一维数组的复制,class ArrayC

8、 public static void main(String args) int a,b, i, j; a=new int3; b=new int5; System.out.println(“a.length=“+a.length); for ( i=0; ia.length; i+) ai=i; System.out.print(ai+“ “); System.out.println();,System.out.println(“Before array assignment“); System.out.println (“b.length=“+b.length); for (j=0; j

9、b.length; j+) bj=j*10; System.out.print(bj+“ “); System.out.println(); b=a; System.out.println(“After array assignment“); System.out.println (“b.length=“+b.length);,for (j=0; jb.length; j+) System.out.print(bj+“ “); System.out.println(); ,程序运行结果如下: a.length=3 0 1 2 Before array assignment b.length=5

10、 0 10 20 30 40 After array assignment b.length=3 0 1 2,例-二维数组的复制,class ArrayC2 public static void main(String args) int c,d,i, j; c=new int22; d=new int33; System.out.println(“ Array d“); for(i=0;id.length; i+) for (j=0; jdi.length; j+) dij=i+j; System.out.print(dij+“ “); System.out.println(); ,c=d;

11、 System.out.println(“ Array c“); for(i=0;ic.length; i+) for (j=0; jci.length; j+) System.out.print(cij+“ “); System.out.println(); ,程序运行结果如下: Array d 0 1 2 1 2 3 2 3 4 Array c 0 1 2 1 2 3 2 3 4,5.4 数组应用举例,例 排序 排序是将一组数按照递增或递减的顺序排列。排序的方法很多,其中最基本的是选择法。此处介绍选择法排序,其基本思想如下: 对于给定的n个数,从中选出最小(大)的数,与第1个数交换位置,便

12、将最小(大)的数置于第1个位置。 对于除第1个数外的剩下的n-1个数,重复步骤1,将次小(大)的数置于第2个位置。 对于剩下的n-2,n-3,n-n+2个数用同样的方法,分别将第3个最小(大)数置于第3位置,第4个最小(大)数置于第4位置,第n-1个最小(大)数置于第n-1位置。,假定有7个数,7,4,0,6,2,5,1,根据该思想,对其按照递增顺序排列,需要进行6轮选择和交换过程: 第1轮:7个数中,最小数是0,与第1个数7交换位置,结果为:0 4 7 6 2 5 1 第2轮:剩下的6个数中,最小数是1,与第2个数4交换位置,结果为:0 1 7 6 2 5 4 第3轮:剩下的5个数中,最小数

13、是2,与第3个数7交换位置,结果为:0 1 2 6 7 5 4,第4轮:剩下的4个数中,最小数是4,与第4个数6交换位置,结果为:0 1 2 4 7 5 6 第5轮:剩下的3个数中,最小数是5,与第5个数7交换位置,结果为:0 1 2 4 5 7 6 第6轮:剩下的2个数中,最小数是6,与第6个数7交换位置,结果为:0 1 2 4 5 6 7 可见,对于n个待排序的数,要进行n-1轮的选择和交换过程。其中第i轮的选择和交换过程中,要进行n-i次的比较,方能选择出该轮中最小(大)的数。,import java.io.*; class ArraySort public static void ma

14、in(String args) throws IOException BufferedReader keyin =new BufferedReader(new InputStreamReader(System.in); int a,i, j, k, temp; String c; System.out.println(“Input the number of array elements!“);,例-排序,例 排序(续),c=keyin.readLine(); temp=Integer.parseInt(c); a = new inttemp; System.out.println(“Input “+ temp +“ numbers. One per line!“); for ( i=0; ia.length; i+) c=keyin.readLine(); ai=Integer.parseInt(c); System.out.println(“After sorting!“);,for ( i=0; ia.length-1; i+) k = i; for( j = i + 1 ; j a.length; j+) if (aj ak ) k = j; temp = ai; ai= ak; ak = temp; for ( i=0; ia

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号