java流程控制语句.ppt

上传人:牧羊曲112 文档编号:5436113 上传时间:2023-07-06 格式:PPT 页数:69 大小:374KB
返回 下载 相关 举报
java流程控制语句.ppt_第1页
第1页 / 共69页
java流程控制语句.ppt_第2页
第2页 / 共69页
java流程控制语句.ppt_第3页
第3页 / 共69页
java流程控制语句.ppt_第4页
第4页 / 共69页
java流程控制语句.ppt_第5页
第5页 / 共69页
点击查看更多>>
资源描述

《java流程控制语句.ppt》由会员分享,可在线阅读,更多相关《java流程控制语句.ppt(69页珍藏版)》请在三一办公上搜索。

1、第3章 Java语言程序控制语句,简单语句和复合语句 标准输入输出语句 3.1 选择语句 3.2 循环语句3.3 跳转语句 数 组3.4 断言3.5 Java程序示例,简单语句和复合语句,语句是程序的基本组成单位。1.简单语句 变量说明语句、赋值语句、方法调用语句、空语句等被称为简单语句。在Java语言中,一个简单语句总是以分号结尾的。例:int a=1,b;/变量说明语句 b=2;/赋值语句;/空语句 System.out.print(b);/方法调用语句,2.复合语句 复合语句:由大括号“”括起来的语句。复合语句的 内可放0n个语句,每条语句都应该符合Java语句的语法。例.if(a0)z

2、=a;a=b;b=z;,Java的输入和输出使用方法调用语句。计算机支持多种输入和输出设备。例如,鼠标、键盘、扫描仪等是输入设备,显示器、打印机等是输出设备。标准I/O操作是指通过标准输入、输出设备进行的输入和输出操作。一般用键盘作为标准的输入设备,显示器则是标准的输出设备。在Java中,通过 System.in 和 System.out 对象分别与键盘和显示器发生联系而完成程序信息的输入和输出。,标准输入输出语句(I/O),System.out 对象包含着多个向显示器输出数据的方法。System.out对象中包含的最常用的方法是:print()-输出一项数据但不换行 println()-输出

3、一项数据后换行 例如:System.out.print(Example!);System.out.print(Input Name:);执行后将输出:Example!Input Name:代码:(Example!);System.out.println(Input Name:);执行上述代码将输出如下结果:Example!Input Name:,1.标准输出System.out对象,如果要用一个语句输出多个数据项,则数据项之间要用“+”连接。如:String str1=abc;int n=11,m=22;System.out.print(str1+ABC);/输出:abcABC System.

4、out.print(1+ABC);/输出:1ABC 要将数值型变量的值分别输出,则必须在中间加入空格字符串(或空串)。如:System.out.print(n+m);/输出:33 System.out.print(n+m);/输出:11 22 System.out.print(n+m);/输出:1122,System.in对象用于在程序运行时从键盘接收输入。在Java中输入数据时,为了处理输入数据的过程中可能出现的错误,需要使用异常处理,以使程序具有“坚固性”(异常处理的详细介绍在第5章)。有两种异常处理格式实现输入:使用try-catch 语句与read方法 使用throws IOExcep

5、tion与read方法 下面是从键盘读一个字符,一个字符串或一个整数的程序示例。当程序中需要实现键盘输入功能时可以参考这些例子。,2.标准输入System.in对象,import java.io.*;/引入java.io中的类(输入输出类),因程序中要/用到输入输出类的read()方法,*表示引入该包中下面所有用到的类public class ReadCharpublic static void main(String args)throws IOException/主方法抛出异常 char ch=(char)System.in.read();/调用read方法,读一个/字节数据(一个字符的A

6、SCII码值)存于ch中 System.out.print(ch);,例.从键盘读一个字符 使用throws IOException与read方法,例.从键盘读一数字串并转化为整数,import java.io.*;class ReadStringOrIntpublic static void main(String args)throws IOException byte buf=new byte20;/20个字节的数组用于存字符串 String str;int anInt;System.in.read(buf);/从键盘读一个数字串保存于buf中 str=new String(buf);/

7、buf 转换成String对象str/(ASCII字符串转换成Unicode码串)anInt=Integer.parseInt(str.trim();/数字串转换成整数 System.out.print(anInt);,要将数字串转换成实数,则:float f=Float.parseFloat(str.trim();/转成单精度数 double d=Double.parseDouble(str.trim();/转成双精度数,一般而言,Java程序中的语句是顺序执行的,也就是说,按照程序中语句出现的次序从第一条开始依次执行到最后一条。如果需要根据某个条件来决定下面该进行什么操作,或是某些事情应根

8、据需要不断重复地去做。这时就需要用到流程控制语句来控制程序中语句的执行顺序。,3.1 选择语句,3.1.1 if 语句3.1.2 switch 语句,简单if语句的执行流程如下图所示。,if-else语句根据判定条件的真假来执行两种操作中的一种。1.简单形式,语法形式:if(布尔表达式)语句 注意:if 语句中的条件必须是布尔表达式,这点与C+是不同的(C+中可以是一般的算术表达式)。语句可以是复合语句。例.if(minb)min=b;,3.1.1 if 语句,条 件,布尔表达式,语句,if的后继语句,false,true,简单if语句的执行流程图,语法形式:if(布尔表达式)语句1 else

9、 语句2 注意:条件必须是布尔表达式。语句1、语句2可以是复合语句。例.if(ab)min=a;else min=b;带else部分的if语句的执行流程如下图所示。,条 件,2.完全形式,布尔表达式,if的后继,false,true,有else部分的if语句的执行流程,语句1,语句2,if语句中内嵌的语句又是if语句的情况称为if语句的嵌套。如:if(布尔表达式1)语句1 else if(布尔表达式2)语句2 else if(布尔表达式m)语句m else 语句n,3.if 语句的嵌套,程序从上往下依次判断布尔表达式的条件,一旦某个条件满足(即布尔表达式的值为true),就执行相关的语句,然后

10、就不再判断其余的条件,直接转到if语句的后续语句去执行。Java规定,else总是与离它前面最近的 if 配对。如果需要,可以通过使用花括号“”来改变配对关系。如:(1)if(x=1)(2)if(x=1)if(y=1)if(y=1)aa=1;aa=1;else aa=2;else aa=2;(1)此处的else与if(y=1)相配;(2)此处的else与if(x=1)相配,例.求一元二次方程(ax2+bx+c=0)的根,public class roots public static void main(String args)int a,b,c,check;float x1,x2;a=1;b

11、=-2;c=1;check=b*b-4*a*c;if(check=0)x1=(-b)/(2*a);x2=x1;System.out.println(x1=+x1);System.out.println(x2=+x2);,else if(check0)x1=(-b+(float)Math.sqrt(check)/(2*a);x2=(-b-(float)Math.sqrt(check)/(2*a);System.out.println(x1=+x1);System.out.println(x2=+x2);else/*请自己填写*/,练习:编写一程序,运行后从键盘输入二个整数,输出 其中的最小数。,

12、课堂练习:求最小数,import java.io.*;public class Minpublic static void main(String args)throws IOException,byte buf=new byte20;String str;int a,b,min;System.out.println(请输入二个整数:);System.in.read(buf);/从键盘读一数字串存于buf中str=new String(buf);/buf 转换成字符串 a=Integer.parseInt(str.trim();/数字串转换成整数System.in.read(buf);str=

13、new String(buf);b=Integer.parseInt(str.trim();min=a;if(minb)min=b;System.out.println(最小数是+min);,switch 语句,switch语句根据测试表达式的结果来执行多个可能操作中的一个,它的语法形式如下:switch语句的流程如下所示。,switch(测试表达式)case 常量1:语句块1 break;case 常量2:语句块2 break;case 常量n:语句块n break;default:语句块n+1,测试表达式,语句块1,break,语句块2,break,break,语句块n,语句块n+1,后继

14、语句,常量2,default,switch语句的流程图,常量1,常量n,switch语句中的每个“case常量:”称为一个case子句,代表一个case分支的入口。switch语句的注意点如下:(1)测试表达式必须是byte、char、short、int类型的表达式,而不能使用浮点类型或long类型,也不能为一个字符串。(2)switch语句将测试表达式的值依次与每个case子句中的常量值相比较。如果匹配成功,则执行该case子句中常量值后的语句,直到遇到break语句为止。(3)case子句中常量的类型必须与测试表达式的类型相容,而且每个case子句中常量的值必须是不同的。常量也可以是常量表

15、达式(不含变量、方法的表达式)。,(4)default子句是可选的,当测试表达式的值与任一case子句中的值都不匹配时,就执行default后的语句。如果表达式的值与任一case子句中的值都不匹配且没有default子句,则程序不执行任何操作,而是直接跳出switch语句,进入后续程序段的执行。(5)break语句用来在执行完一个case分支后,使程序跳出switch语句,执行switch语句的后续语句。因为case子句只是起到一个标号的作用,用来查找匹配的入口,然后从此处开始执行,对后面的case子句的值不再进行比较,而是直接执行其后的语句。因此一般情况下,每个case分支后,要用break

16、来终止后面的case分支语句的执行。,(6)case分支中包括多个执行语句时,可以不用花括号括起。(7)通过if-else语句可以实现switch语句所有的功能。但通常使用switch语句更简练,且可读性强,程序的执行效率也高。(8)if-else语句可以基于一个范围内的值或一个条件来进行不同的操作,但switch语句中的每个case子句都必须对应一个单值。,class SwitchDemo public static void main(String args)int month=7;String season;switch(month)case 12:case 1:case 2:seaso

17、n=冬季;break;case 3:case 4:case 5:season=春季;break;,case 6:case 7:case 8:season=夏季;break;case 9:case 10:case 11:season=秋季;break;default:season=错!;System.out.println(month+月是+season);,ss,例.用switch语句判断一个月份属于一年中哪个季节(春、夏、秋、冬)(方法一),循环语句的作用是反复执行同一段代码直到满足结束条件。许多问题中需要用到循环控制。例如累加、累乘等。Java循环语句有while、do-while和for

18、三种。,3.2 循环语句,3.2.1 while语句3.2.2 do-while语句3.2.3 for 语句 循环嵌套,while语句形式如下:while(布尔表达式)语句 while语句执行的过程为:执行while语句时,首先判断布尔表达式的值,当布尔表达式的值为true,则执行循环体,然后再判断条件,直到布尔表达式的值为false,停止执行语句。使用while语句应注意以下两点:(1)该语句是先判断后执行,若一开始条件就不成立,就不执行循环体。(2)在循环体内一定要有改变条件的语句,否则是死循环。while语句的流程图如下所示。,3.2.1 while 语句,布尔表达式,循环体,false

19、,true,while语句流程图,class sum public static void main(String args)int n=100;/循环总数n=100 int i=1;/循环次数,初值为 float s=0;/和s为实型 while(i=n)/循环条件,循环总数100 s=s+1.0f/i;/s增加1/i,1.0f表示是float型 i+;/循环次数加 System.out.println(s=+s);,例.用while循环语句计算s=1+1/2+1/3+1/100。,Java还提供了另一个与while语句类似的语句do-while语句。do-while语句的语法形式如下:do

20、 语句 while(布尔表达式);do-while语句执行的过程为:先执行一次循环体中的语句,然后测试布尔表达式的值,如果布表达式的值为真,那就继续执行循环体,do-while语句将不断地测试布尔表达式的值并执行循环体中的内容,直到布尔表达式的值为假为止。do-while语句的流程图如下所示。,3.2.2 do-while 语句,布尔表达式,循环体,true,false,Do-while语句流程图,do-while语句和while语句的不同之处是:do-while语句总是先进入循环,执行一次循环体后才检测循环条件,以决定是否继续循环,而while语句是先测试条件,再决定是否进入循环。所以,用d

21、o-while语句时,循环体至少执行一次。例.用do-while循环语句计算s=1+1/2+1/3+1/4+1/100。,class sum public static void main(String args)int i=1;/循环次数,初值为 float s=0;/和s为实型 do/循环条件 s=s+1.0f/i;/s增加1/i,1.0f表示是float型 i+;/循环次数加 while(i=100);/要循环100次 System.out.println(s=+s);,for语句是循环的另一种表示形式。for语句的语法形式为:for(表达式1;表达式2;表达式3)语句 for是for语

22、句的关键字,语句为for语句的循环体,若有多个语句,需构成复合语句。for语句中循环控制变量必须是有序类型,常用的有整型、字符型、布尔型。循环控制变量初值和终值通常是与控制变量类型相一致的一个常量,也可以是表达式。循环次数由初值和终值决定。执行过程:(1)按表达式1将初值赋给循环控制变量。(2)按表达式2判断循环是否成立,即判断控制变量的值,3.2.3 for 语句,是否越过终值(未越过终值为条件成立,越过终值为条件不成立),若条件不成立、转步骤(6)。(3)若条件成立,则执行循环体。(4)按表达式3修改控制变量。对于递增型为原控制变量值的后续;对于递减型为原控制变量值的前导。(5)返回步骤(

23、2)。(6)结束循环。,求解表达式1,表达式2,循环体,求解表达式3,for语句的下一语句,false,true,for语句的流程图,例.求Fibonacci数列的前40个数项。Fibonacci数列:1,1,2,3,5,8,13,21,34,从数列看到:F1=1(n=1)F2=1(n=2)Fn=Fn-1+Fn-2(n3),for语句使用的一些技巧:有时,for语句在表达式1和表达式3的位置上需要包含多个表达式,这时可使用Java提供的逗号运算符来实现。,逗号运算符是用逗号“,”分隔多个表达式,被看作一个表达式。这样就可以在只能放一个表达式的地方放任意多个表达式,只须用逗号将它们分隔开。如:f

24、or(i=1,j=10;ij;i+,j-)表达式1、表达式2及表达式3都可以为空语句(但分号不能省略),三者均为空的时候,相当于一个无限循环。如:for(;),注意点:由于Java语句是用分号结束的,一个容易犯的错误是在for语句的圆括号后面加了一个不应有的分号。例如:下面的程序是想要计算:1+2+.+99,在上例中,分号被放在循环体的前边,相当于for语句的循环体为空语句,其结果是for循环体什么都不处理。此程序的编译不会出任何错误,但当它运行时并不产生预期的结果。运行上面这个程序会得到如下输出结果:value=100 一般来说,在循环次数预知的情况下,用for语句比较方便,而while语句

25、和do-while语句比较适合于循环次数不能预先确定的情况。,循环嵌套,一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多重循环。上述三种循环(while循环,do-while循环和for循环)语句之间可以相互嵌套使用。例.打印下面的数字图案(每行打5个数字,每行各列数的值等于第一列数乘自己所在列号):1 2 3 4 5 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20 5 10 15 20 25,循环嵌套,public class Loop_Looppublic static void main(String args)int

26、I,J,K;/I表示行号,J表示列号,K存临时计算的值 for(I=1;I=5;I+)for(J=1;J=5;J+)K=I*J;System.out.print(K+);System.out.println();/每打5列换行,例.百鸡问题。已知公鸡5元1只,母鸡3元一只,小鸡1元3只,要求用100元刚好买100只鸡,问有多少种采购方案。分析:设变量I、J、K分别代表公鸡数、母鸡数及小鸡数,则应满足下列一些条件:I+J+K=100(只),I,J,K0;5I+3J+K/3=100(元);若用100元全部买公鸡,最多只能买20只,所以I20;同样地母鸡最多只能买33只,所以J33;而小鸡数目就是1

27、00-I-J;根据以上分析,可编程如下:,例.百鸡问题,public class Loop_Loop public static void main(String args)int I,J,K;System.out.println(公鸡 母鸡 小鸡);for(I=0;I=20;I+)for(J=0;J=33;J+)K=100-I-J;if(5*I+3*J+K/3.0=100)/注意“K/3.0”System.out.println(I+J+K);,循环语句正常结束是在循环条件表达式的值变为false的 时候,但有时即使测试的条件为true,也希望循环立即终止,这时可以用跳转语句break或co

28、ntinue语句实现。continue语句只能用于循环语句中。break可用于switch语句中,亦可用于循环语句中 注意:Java中不支持goto语句。,3.3 跳转语句,3.3.1 break语句3.3.2 continue语句,break语句的一般语法格式为:break 标号;其中,用“”括起的标号部分是可选的。1.不带标号的情况 此时,break语句的功能是终止break所在的循环语句,转去执行其后的第一条语句。对于不带标号的break语句,在执行时有两个特点:1)在有多重循环时,它只能使循环从本层的循环跳出来;2)跳出循环后转移到本层循环的下一个语句。,3.3.1 break 语句,

29、public class breakout public static void main(String args)throws IOException int I,J,K;char ch=;for(I=1;I=1;I+)/最外层循环 for(J=1;J=2;J+)/第二层循环 for(K=1;K=2;K+)/内层循环 ch=(char)System.in.read();if(ch=c)break;/结束内层循环语句 System.out.println(333);if(ch=b)break;/结束第二层循环语句 System.out.println(222);if(ch=a)break;/结

30、束最外层循环语句 System.out.println(111);,例.不带标号的break语句,2.带标号的情况 标号就是加在语句前面的一个合法的标识符,其后跟一个冒号。如下所示:标号:语句 标号只是起到对语句标识的作用。带标号的break语句的功能是使程序结束标号指明的外层循环语句,执行该外层循环语句的后继语句。标号应该定义在(要结束的)外层循环语句的开始处。带标号的break语句的一种典型用法就是实现break语句所在的循环的外层循环语句(从内部直接跳出来)。例如:,import java.io.*;class breakto_A public static void main(Stri

31、ng args)throws IOException int i,j;char ch=;A:/标号A,外层循环 for(i=1;i=2;i+)for(j=1;j=1;j+)/内层循环 ch=(char)System.in.read();if(ch=a)break A;/结束A对应的循环语句(外层循环)System.out.println(222);System.out.println(111);,continue语句只能在循环语句中使用。它和break语句的区别是continue语句只结束所在循环语句的本次循环,而不是终止整个循环语句的执行;而break语句则是结束整个循环语句的执行。cont

32、inue语句的一般语法格式为:continue 标号;其中,用“”括起的标号部分是可选的。1.不带标号的使用情况 此时,continue语句用来结束所在循环语句的本次循环,即跳过循环体中continue语句后面的语句,回到循环体的条件测试部分继续执行。不带标号continue语句和不带标号的break语句类似,只能对所在一层的循环起作用。,3.3.2 continue 语句,public class continueto public static void main(String args)throws IOException int I,J;char ch=;for(I=1;I=1;I+)

33、/外层循环 for(J=1;J=2;J+)/内层循环 ch=(char)System.in.read();if(ch=b)continue;/结束内层循环的本次循环 System.out.println(没有结束内循环!);if(ch=a)continue;/结束外层循环的本次循环 System.out.println(没有结束外循环!);,例:不带标号的continue语句,2.带标号的使用情况 此时,continue语句跳过标号所指的循环语句所有余下部分语句,回到标号所指循环语句块的条件测试部分继续执行。注意标号应该定义在外层循环语句的开始处。下面是一个使用带标号的continue语句的例

34、子。,import java.io.*;class continue_A public static void main(String args)throws IOException int i,j;char ch=;A:/标号A,外层循环 for(i=1;i=2;i+)for(j=1;j=1;j+)/内层循环 ch=(char)System.in.read();if(ch=a)continue A;/结束A对应的循环语句的本次循环 System.out.println(本次内循环正常结束!);System.out.println(本次外循环正常结束!);,1 一维数组 2 多维数组,数组是相

35、同类型的数据元素按顺序组成的一种复合数据类型,元素在数组中的相对位置由下标来指明。数组中的每个元素通过数组名加下标进行引用。数组作为一种特殊的数据类型具有以下特点:(1)一个数组中所有的元素应该是同一类型;(2)数组中的元素是有顺序的;(3)数组中的一个元素通过数组名和数组下标来确定。,数 组,1)一维数组的说明与构造 与C+中不同的是,Java中数组要用new操作符实例化才可使用。所以建立一个数组需要两步:声明数组 实例化 格式:类型 数组名;(或:类型 数组名;)数组名=new 类型数组长度;说明:第一行声明一个数组名,并指明数组类型(可任何类型)和维数;第二行使用new操作符构造数组并初

36、始化(缺省值),即为数组元素分配存储空间,并为每个数组元素都赋予一个初值。,1.一维数组,上面的第二步实例化可以暂时不做,到需要时再完成。也可将上面的二步合并为一步:类型 数组名=new 类型数组长度;例:int list;/声明一个整型数组 list=new int3;/为上面声明的数组分配3个整数元素/的内存空间,并使每个元素初值为0 合并为一步:int list=new int3;,2)数组的初始化 数组初始化就是为数组元素指定初始值。通常在构造数组时,Jave会使每个数组元素初始化为一个默认值。但在许多情况下,并不希望数组的初值为默认值,此时,就需要用赋值语句来对数组进行初始化。数组的

37、初始化方式有两种:一、像初始化简单类型一样自动初始化数组(不用new),即在说明数组的同时进行初始化(称为静态初始化);二、仅用new创建数组,让它取缺省值,到以后再为元素赋值(称为动态初始化)。,例:int a=1,2,3,4,5;/静态初始化 int list=new int3;/动态初始化 上面的第一个语句声明并创建了数组a,并且为数组每个元素赋初值,结果为:a0=1,a1=2,a2,=3,a3=4,a4=5 上面的第二个语句仅声明并创建了数组a,并未给数组赋初值,由Jave为数组元素默认初始化,于是得到三个元素并且都有初值:list0=0,list1=0,list2=0 注意:“”中所

38、有数据的类型必须与数组的类型相同,3)数组元素的使用 数组被实例化后,就可以在程序中像使用任何变量一样来使用数组元素,即可以在任何允许使用变量的地方使用数组元素。数组元素的标识方式为:数组名下标 例:a3、bi、ci*5 下标的取值范围是从0开始,一直到数组的长度减1。对于上面例子中的list数组来说,它有3个元素,分别为:list0、list1、list2(注意:不存在list3)注意:1.下标只能为byte、short、int或char类型,不能为long;2.Java在程序编译时并不对数组下标进行越界检查,但在运行时会对数组下标进行越界检查,以保证安全性。,Java中的数组实际是Arra

39、y类的一个对象,定义一个数组实际就是创建Array类的一个对象。该类中还有一些属性和方法供数组使用。如对于每个数组都有一个属性:length,它指明数组的长度(即元素个数),由程序自动计算。例如,list.length指明了数组list的长度。Java中的数组还可利用数组名来互相赋值,但要注意,这种赋值实际是定义一个别名,即是同一数组的不同名字的引用。例如:int a=2,4,6,b;b=a;System.out.println(b1);/输出4 b1=7;System.out.println(a1);/输出7,4)一维数组应用示例例.编写一个程序,在其中建立一个有10个整数的数组,运行后从键

40、盘输入10个整数放入数组,然后输出其中的最大数。,import java.io.*;public class Array1public static void main(String args)throws IOException int i,max,a=new int10;byte buf=new byte20;String str;,程序如下:,System.out.println(请输入10个数:);for(i=0;i=9;i+)/输入10个数,以回车分隔 System.in.read(buf);str=new String(buf);ai=Integer.parseInt(str.tr

41、im();max=a0;for(i=1;i=9;i+)/找最大数 if(maxai)max=ai;System.out.println(最大数是+max);,与C+中类似,在Java中,当一维数组中的类型又是一个一维数组时,就构成了二维数组,以此类推,可构成更高维的数组。所以,多维数组是通过对一维数组的嵌套声明来实现的。多维数组与一维数组一样,需要声明并实例化后才可使用。下面主要以二维数组为例来说明用法。1)二维数组的说明与创建 二维数组说明的格式为:类型 数组名;(或 类型 数组名;)例如:int intArray;与一维数组一样,此时还没有为数组元素分配内存空间,还需要用new关键字来创建

42、数组,然后才可以使用该数组的每个元素。,2.多维数组,对二维数组来说,分配内存空间有下面几种方法。直接为每一维分配空间,如:int a=new int23;该语句创建了一个二维数组a,其较高一维含两个元素,每个元素为由3个整型数构成的一维整型数组。如下所示:,从最高维开始,分别为每一维分配空间,如:,int b=new int2;/最高维含2个元素,每/个元素为一个整型数组 b0=new int3;/最高维第一个元素是一个长度/为3的整型数组 b1=new int5;/最高维第二个元素是一个长度/为5的整型数组 下图为该数组的示意图。,注意:在使用运算符new来分配内存时,对于多维数组至少要给

43、出最高维的大小。如果在程序中出现 int a2=new int;编译器将要提示如下错误:Array dimension missing2)二维数组元素的初始化 二维数组元素的初始化同一维数组一样有两种方式:(1)在说明数组的同时进行初始化。(2)仅用new创建数组,让它取缺省值,到以后再为元素赋值(称为动态初始化)。,例:int a=1,2,3,4,5,6;该语句声明了一个有6个元素的二维数组并初始化为:a00=1 a10=2,a11=3 a20=4,a21=5,a22=63)二维数组元素的引用 对二维数组中每个元素,其引用方式为:数组名 下标1下标2 其中下标1、下标2为非负的整型常数或表达

44、式,如:a23、cci+2j*3(i,j为整型)等。同样,每一维的下标取值都从0开始。,4)二维数组应用示例例.编写一个程序,计算4行4列整数矩阵的对角线元素之和。程序如下:,public class Array2public static void main(String args)int i,sum=0;int a=5,3,1,2,2,4,6,8,3,5,7,1,6,4,9,2;for(i=0;i=3;i+)sum+=aii;System.out.println(sum);,示例1:输出加法表,+1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 10 2 3 4 5

45、6 7 8 9 10 11 3 4 5 6 7 8 9 10 11 12 4 5 6 7 8 9 10 11 12 13 5 6 7 8 9 10 11 12 13 14 6 7 8 9 10 11 12 13 14 15 7 8 9 10 11 12 13 14 15 16 8 9 10 11 12 13 14 15 16 17 9 10 11 12 13 14 15 16 17 18,例.编写程序输出加法表。加法表如下:,3.5 Java程序示例,程序:,public class Addpublic static void main(String args)int i,j;System.o

46、ut.println(+1 2 3 4 5 6 7 8 9);for(i=1;i=9;i+)System.out.print(i+);for(j=1;j=9;j+)if(i+j=9)System.out.print(i+j+);/1位数后空3格 else System.out.print(i+j+);/2位数后空2格 System.out.println();,示例2:整数排序,例.编写程序,使整型数组的元素按升序排列。方法:使用采用选择排序方法。选择排序方法思想(与书上稍有些不同):n个元素排序,需要进行n-1趟。第1趟找出第1小的元素,与数组的第1个元素(即a0)交换,从而最小的元素放到了

47、最前面;第2趟找出第2小的元素,与数组的第2个元素(即a1)交换,从而第2小的元素放到了第2位上;第n-1趟找出第n-1小的元素,与数组的第n-1个元素(即an-2)交换,从而第n-1小的元素放到了第n-1位上。至此,数组排序完成。,(注:书上按降序排列),72,65,42,94,65,28,44,36,74,80,程序:,public class OrderArraypublic static void main(String args)int intArray=42,65,80,74,36,44,28,65,94,72;int i,j,k,temp;for(i=0;i=8;i+)k=i;/

48、k存放区间中最小元素的下标,开始时为区间的第1个下标 for(j=i+1;j=9;j+)/找出区间最小的元素,下标记在k中 if(intArrayjintArrayk)k=j;temp=intArrayi;intArrayi=intArrayk;intArrayk=temp;for(i=0;i=9;i+)System.out.println(intArrayi+);,1.输出1到100中的偶数,一行5个。2.编写程序,输入短整数n,计算:S=1+(1+2)+(1+2+3)+(1+2+n)3.编写求一元二次方程的实根的程序。4.已知两个正整数m、n,编写求它们的最大公约数的程序。提示:用辗转相除法。方法:(1)求m除n的余数r;(2)如果r为0,则n为最大公约数,结束。否则转(3);(3)用n置m,用r置n,回到(1)。,第3章习题,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号