java语言程序设计5数组定义与使用ppt课件.ppt

上传人:飞****2 文档编号:28020264 上传时间:2022-07-26 格式:PPT 页数:58 大小:331.51KB
返回 下载 相关 举报
java语言程序设计5数组定义与使用ppt课件.ppt_第1页
第1页 / 共58页
java语言程序设计5数组定义与使用ppt课件.ppt_第2页
第2页 / 共58页
点击查看更多>>
资源描述

《java语言程序设计5数组定义与使用ppt课件.ppt》由会员分享,可在线阅读,更多相关《java语言程序设计5数组定义与使用ppt课件.ppt(58页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

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

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

3、core,再用new运算符初始化该数组。 intint score; score; score=new int10;score=new int10; 数组中各元素通过下标来区分,下标的最小值为0,最大值比元素个数少1。score的 10个元素分别为score0,score1,score2,score3,score9。系统为该数组的10个元素分配存储空间,形式如下表所示:score0score1score2score3score4score5score6score7score8score9例:要计算100个学生的平均成绩,可以使用以下的程序段:float sum;int i;int score

4、;score = new int100; /* 输入数组各元素的值 */sum=0;for ( i=0; i100; i+) sum=sum+scorei;sum=sum/100;n声明的同时进行初始化声明的同时进行初始化 可以用1条语句声明并初始化数组,即将上面的2条语句合并为一条语句。其格式如下:类型标识符类型标识符 数组名数组名 = new 类型标识符类型标识符元素个数元素个数或或类型标识符类型标识符 数组名数组名= new 类型标识符类型标识符元素个数元素个数 例如,要表示10个学生的学号,可以按以下方式声明并初始化数组no: int no = new int10; l赋初值初始化数组

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

6、识符类型标识符 数组名数组名 例如,要表示每个数据为整型数的行列式,可以声明 如下二维数组: int a ;2 二维数组的初始化 l用用newnew初始化二维数组初始化二维数组n先声明数组再初始化先声明数组再初始化 数组名数组名= new 类型标识符类型标识符行数行数列数列数例如: intint a; a; a=new int34; a=new int34;n声明的同时进行初始化声明的同时进行初始化 类型标识符类型标识符 数组名数组名 = new 类型标识符类型标识符行数行数列数列数或或类型标识符类型标识符 数组名数组名=new 类型标识符类型标识符行数行数列数列数 int int a=new

7、 int34; a=new int34; 数组中各元素通过两个下标来区分,每个下标的最小值为0,最大值分别比行数或列数少1。a的12个元素分别为a00, a01, a02, a03, a10, a11,a23。系统为该数组a的12个元素分配存储空间,形式如表所示:a0 0a0 1a0 2a03a1 0a1 1a1 2a1 3a2 0a2 1a2 2a2 3l赋初值初始化数组赋初值初始化数组其格式如下:类型标识符 数组名 = 初值表,初值表,初值表 int grade = 65,34, 78, 81, 56, 92, 56, 87,90, 92, 69, 75;数组grade共有12个元素,元素

8、grade 00,grade 01,grade 02,grade 10,grade 32的初始值分别为65,34,78,75,如表所示:grade 00 65grade 01 34grade 02 78grade 10 81grade 11 56grade 12 92grade 20 56grade 21 87grade 22 90grade 30 92grade 31 69grade 32 755.3 数组的基本操作数组的基本操作 l数组的引用 对数组的应用通常是对其元素的引用。 int age=new int3; age0=25; age2=2+age0 ;l数组的复制 int a=new

9、 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;l数组的输出数组的输出 数组的输出通常是逐个元素结合循环语句实现的。 int a=new int6; for(int i=0;i6;i+) ai=i; System.out.println(ai); 例-一维数组的复制class ArrayC public

10、 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; jb.length; j+) b

11、j=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=30 1 2Before array assignmentb.length=50 10 20 30 40After array as

12、signmentb.length=30 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;System.out.println( Array c);for(i=0;i

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

14、)的数置于第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个数中,最小数是2,与第3个数7交换位置,结果为:0 1 2 6 7 5 4第4轮:剩下的4个数中,最小数是4,与

15、第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 main(String args) throws IOException BufferedReader key

16、in =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

17、=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.length; i+) System.out.println(ai);例-矩阵运算 数学中的矩阵在Java中用二维数组实现,本例中要进行矩阵的加、乘运算。class ArrayC3 publi

18、c static void main(String args) int c=1,2,3,4,5,6,7,8,9; int d=2,2,2,1,1,1,3,3,3; int i, j, k; int e=new int33; System.out.println( Array c); for(i=0;ic.length; i+) for (j=0; jci.length; j+) System.out.print(cij+ ); System.out.println(); System.out.println( Array d);for(i=0;id.length; i+) for (j=0;

19、jdi.length; j+) System.out.print(dij+ ); System.out.println(); System.out.println( Array c+d);for(i=0;ie.length; i+) for (j=0; jei.length; j+) eij=cij+dij; System.out.print(eij+ ); System.out.println(); System.out.println( Array c*d);for(i=0;i3; i+) for (j=0; j3; j+) eij=0; for (k=0;k3; k+) eij=eij+

20、cik*dkj; System.out.print(eij+ ); System.out.println(); 程序运行结果如下:Array c1 2 34 5 67 8 9Array d2 2 21 1 13 3 3Array c+d3 4 55 6 710 11 12Array c*d12 12 1221 21 2130 30 305.5 5.5 数组参数数组参数 在java的过程中,允许参数是数组。在使用数组参数时,应该注意以下事项:u在形式参数表中,数组名后的括号不能省略,括号个数和数组的维数相等。不需给出数组元素的个数。u在实际参数表中,数组名后不需括号。u数组名做实际参数时,传递的

21、是地址,而不是值,即形式参数和实际参数具有相同的存储单元。例-计算数组元素平均值class ArrayC4 public static void main(String args) int c=1,2,3,4,5,6,7,8,9; int j;System.out.println( Array c); for (j=0; jc.length; j+) System.out.print(cj+ ); System.out.println();System.out.println( Array average);System.out.println( arrayAverage(c);static

22、float arrayAverage(int d) float average=0 ; for(int i=0;id.length; i+) average=average+di; average=average/d.length; return average; 程序运行结果如下:Array c1 2 3 4 5 6 7 8 9Array average5.0例-展示数组参数传递地址的特性class ArrayC6 public static void main(String args) int c=1,2,3,4,5,6,7,8,9,10; int i, j; System.out.pri

23、ntln( Array c before calling arrayMultiply); for (i=0; ic.length; i+) for(j=0; jci.length; j+) System.out.print(cij+ ); System.out.println(); arrayMultiply(c); System.out.println( Array c after calling arrayMultiply); for (i=0; ic.length; i+) for(j=0; jci.length; j+) System.out.print(cij+ ); System.

24、out.println(); static void arrayMultiply(int d) int k,l; for (k=0; kd.length; k+) for(l=0; ldk.length; l+) dkl=2*dkl; System.out.println( In arrayMultiply); for (k=0; kd.length; k+) for(l=0; ldk.length; l+) System.out.print(dkl+ ); System.out.println(); 程序的运行结果如下:Array c before calling arrayMultiply

25、1 2 3 4 56 7 8 9 10In arrayMultiply2 4 6 8 1012 14 16 18 20Array c after calling arrayMultiply2 4 6 8 1012 14 16 18 20例-展示数组元素参数传递值的特性class ArrayC7 public static void main(String args) int c=1,10,100,1000; int j; System.out.println(Array c before calling elementMultiply); for (j=0; jc.length; j+) Sy

26、stem.out.print(cj+ ); System.out.println(); elementMultiply(c2); System.out.println( Array c after calling elementMultiply); for (j=0; jc.length; j+) System.out.print(cj+ ); System.out.println(); static void elementMultiply(int d) d=2*d;System.out.println(d=+d); 该程序的运行结果如下:Array c before calling ele

27、mentMultiply1 10 100 1000d=200Array c after calling elementMultiply1 10 100 10005.6 字符串字符串 l字符数组与字符串 字符数组指数组的元素是字符类型的数据。要表示字符串“China”,可以使用如下的字符数组: char country=C,h,i,n,a; 要表示长度为50的字符串,虽然可以使用如下的字符数组: char title= new char50;l字符串 为了使用方便Java提供了String类型。 n字符串变量的声明和初始化:字符串变量的声明和初始化: String 变量名; 变量名=new St

28、ring(); 或String 字符串变量 = new String(); 例如: String s=new String();n字符串赋值 可以为字符串变量赋一个字符串常量,也可以将一个字符串变量或表达式的值赋给字符串变量。 s=“Chinese people”;s2=s1;s3=a lot of+s2; 结果s2的值为“Chinese people”,s3的值为“a lot of Chinese people”。其中运算符“+”的作用是将前后的两个字符串连接起来。 n字符串的输出字符串可以通过println()或print()语句输出。例如,以下的语句序列为字符串变量s赋值并输出其值:s=

29、All the world;System.out.println(s);输出结果为:All the world例例-字符串应用字符串应用public class StringUse public static void main(String args) String s1, s2; s1=new String(Students should ); s2=new String(); s2=study hard.; System.out.print(s1); System.out.println(s2); s2=learn english, too; System.out.print(s1);

30、System.out.println(s2); s2=s1+s2; System.out.println(s2);该程序的运行结果如下:Students should study hard.Students should learn english, tooStudents should learn english, tool 字符串操作 在Java中,通过String类来使用字符串,String类与很多成员方法来对字符串进行操作。如:字符串访问、比较和转换等。length():返回字符串的长度。charAt(int index):返回字符串中第index个字符 。indexOf(int ch

31、):返回字符串中字符ch第1次出现的位置。indexOf(String str, int index):返回值是在该字符串中,从第index个位置开始,子字符串str第1次出现的位置。 subString (int index1, int index2):返回值是在该字符串中,从第index1个位置开始,到第index2-1个位置结束的子字符串。 将int, long , float, double, boolean等基本类型数据转换为String类型的方法是:String.valueOf(基本类型数据)将字符串型数据转换为其他基本类型的方法及实例 方法返回值类型返回值Boolean.getB

32、oolean(false)booleanfalseInteger.parseInt(123)int123Long.parseLong(375)long375Float.parseFloat(345.23)float345.23Double.parseDouble(67892.34)double67892.34l字符串数组 要表示一组字符串可以用字符串数组来实现。 String str=new String4; str0=“Chinese”; str1=“English”; str2=Tianjin; str3=Chongqing;例-字符串数组public class StringArraypublic static void main(String args) int i; for (i=0; iargs.length; i+) System.out.println(argsi);

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

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com