




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 JAVA 程序设计程序设计第三章第三章 Java程序流程控制程序流程控制 JAVA 程序设计程序设计流程控制是程序设计中的逻辑模块,内容包括顺序流程控制是程序设计中的逻辑模块,内容包括顺序结构、选择结构、循环结构、跳转结构。结构、选择结构、循环结构、跳转结构。这些结构通过程序语言的关键字定义,实现不同的这些结构通过程序语言的关键字定义,实现不同的功能。功能。本章主要介绍本章主要介绍Java程序设计的流程控制,并结合具程序设计的流程控制,并结合具体的实例加以说明。体的实例加以说明。 JAVA 程序设计程序设计语句与程序结构语句与程序结构 语句语句 语句是编程语言中的基本结构,完成一定的功能。程
2、序语句是编程语言中的基本结构,完成一定的功能。程序由一系列的语句组成,在语句后面加上分号表示一条语由一系列的语句组成,在语句后面加上分号表示一条语句的结束。通常语句有以下几种类型:句的结束。通常语句有以下几种类型:1. 空语句空语句仅由一个分号组成,不执行任何操作。空语句是语法仅由一个分号组成,不执行任何操作。空语句是语法的需要,具有特殊的功能。的需要,具有特殊的功能。2. 由表达式构成的语句由表达式构成的语句在表达式后面加上在表达式后面加上“;”即构成了表达式语句,表示表即构成了表达式语句,表示表达式计算的结束。达式计算的结束。 3. 复合语句复合语句用用括起来的多个语句构成了复合语句,在语
3、法上看如括起来的多个语句构成了复合语句,在语法上看如同一条语句。同一条语句。 JAVA 程序设计程序设计4. 方法调用方法调用 由方法调用构成的语句,如由方法调用构成的语句,如System.out.println(a=+a);语句实现了输出结果语句实现了输出结果的功能。的功能。5. 控制语句控制语句 实现程序的流程控制的语句,如中断语句实现程序的流程控制的语句,如中断语句break;或或跳转语句跳转语句continue LABEL;等。等。 JAVA 程序设计程序设计程序结构程序结构 由语句构成的程序需要满足一定的逻辑结构才能实现问由语句构成的程序需要满足一定的逻辑结构才能实现问题的求解。这种
4、结构描述了从数据入口到结果输出的整题的求解。这种结构描述了从数据入口到结果输出的整个流程,包含了顺序、循环、分支、跳转中的一个或多个流程,包含了顺序、循环、分支、跳转中的一个或多个过程。个过程。 JAVA 程序设计程序设计顺序结构顺序结构 顺序结构是程序设计中的最简单的结构,由赋值语顺序结构是程序设计中的最简单的结构,由赋值语句、输入输出语句等构成的结构,按照从左至右,句、输入输出语句等构成的结构,按照从左至右,从上至下的顺序执行。从上至下的顺序执行。 JAVA 程序设计程序设计【例【例3-1】顺序打印三个数。】顺序打印三个数。程序代码如下:程序代码如下:1public class Examp
5、le3_123public static void main(String args)45int a=1; /声明三个整型变量声明三个整型变量6int b=2; 7int c=3;8System.out.println(a+b=+(a+b); /输出第一个和值输出第一个和值9System.out.println(b+c=+(b+c); /输出第二个和值输出第二个和值10System.out.println(c+a=+(c+a); /输出第三个和值输出第三个和值1112 JAVA 程序设计程序设计程序运行结果如下:a+b=3b+c=5c+a=4程序分析如下:下例演示了顺序运算和输出的结果,结果输
6、出的顺序和打印输出代码是一致的。 JAVA 程序设计程序设计【例【例3-2】数值运算。】数值运算。程序代码如下:程序代码如下:1public class Example3_223public static void main(String args)45int a=0, b=0;6float c=7.4f;7char d= , e=m;8d=e;9a=(int)c;10b=b+e;11System.out.print(a=+a);12System.out.print(t);13System.out.print(b=+b);14System.out.print(n);15System.out.p
7、rint(d=+d);1617 程序输出结果如下:程序输出结果如下:a=7b=109d=m JAVA 程序设计程序设计选择结构选择结构 根据某些条件进行选择在生活和生产中经常遇到,例如,在ATM取款机上需要选择查看的币种;交通信号灯的红、黄、绿;学生成绩的优、良、中、差。在编程语言中,选择性通过程序的选择结构来实现。选择结构也称为分支结构,分为单分支结构、双分支结构和多分支结构。 JAVA 程序设计程序设计 if单分支结构单分支结构 if语句可以实现单分支结构,具有如下的格式:if(条件表达式条件表达式)语句块语句块;truefalse语句块语句块1 1if(if(条件表达式条件表达式) )语
8、句块语句块0 0 JAVA 程序设计程序设计【例【例3-3】计算三个数中的最大数。】计算三个数中的最大数。程序代码如下:程序代码如下:1import java.util.*;2public class Example3_3 34public static void main(String args)56int a=8, b=99, c=87;7if(ab)8a=b; /执行完毕后,执行完毕后,a的值为的值为a和和b中的最大值中的最大值9if(ac)10a=c; /执行完毕后,执行完毕后,a的值为的值为a和和c中的最大值中的最大值11System.out.println(maxValue=+ a
9、); 12 13 程序输出结果如下:程序输出结果如下:maxValue=99程序分析如下:程序分析如下:程序返回结果程序返回结果a、b、c中的最大值。第一个中的最大值。第一个if语句将语句将a、b中的最大值赋给中的最大值赋给a,然后,然后在第二个赋值语句中将在第二个赋值语句中将a和和c的最大值赋给的最大值赋给c。 JAVA 程序设计程序设计if双分支结构双分支结构 if(条件表达式条件表达式)语句块语句块;else 语句块语句块;truefalse语句块语句块1if(条件表达式条件表达式)语句块语句块0 0语句块语句块2语句块语句块3 JAVA 程序设计程序设计【例【例3-4】根据】根据a,b
10、的大小决定输出。的大小决定输出。程序代码如下:程序代码如下:1import java.util.*;2public class Example3_4 34public static void main(String args)56int a=8, b=99;7if(a=b 10System.out.println(a大于等于大于等于b); 12 13 程序输出结果如下:程序输出结果如下:a小于小于b JAVA 程序设计程序设计 if多分支结构多分支结构 if(条件表达式条件表达式1)语句块语句块1;else if(条件表达式条件表达式2)语句块语句块2;else语句块语句块3;truefals
11、etruefalse语句块语句块1if(条件表达式条件表达式1)语句块语句块0语句块语句块2语句块语句块3if(条件表达式条件表达式2)语句块语句块4 JAVA 程序设计程序设计【例【例3-5】根据学生的成绩测试是否及格。】根据学生的成绩测试是否及格。程序代码如下:程序代码如下:1import java.io.*; /调用系统函数调用系统函数2import java.util.Scanner;3public class Example3_5445public static void main(String args)double stuGrade; /学生成绩学生成绩System.out.pr
12、intln(“请输入学生的成绩请输入学生的成绩: ”); /界面提示界面提示Scanner scanner=new Scanner(System.in); /接收用户输入接收用户输入String line=scanner.nextLine();stuGrade = Double.parseDouble(line); /将字符串转换为双精度型将字符串转换为双精度型if(stuGrade=0& stuGrade=60& stuGrade=100) /判断条件判断条件2System.out.println(及格及格);else /判断条件判断条件3System.out.println
13、(请重新输入请重新输入:);6 JAVA 程序设计程序设计程序运行结果如下:请输入学生的成绩:55不及格请输入学生的成绩:65及格程序分析如下:程序运行后,将接收用户的输入的数字串,如果数值位于0到60之间,则系统输出“不及格”,若位于60到100之间,则输出“及格”。若有其他不合适的输入,则系统要求用户重新输入。 JAVA 程序设计程序设计if的嵌套结构的嵌套结构 if(表达式表达式1)if(表达式表达式2)语句块语句块 JAVA 程序设计程序设计【例【例3-6】根据学生成绩给出评价。】根据学生成绩给出评价。程序代码如下:程序代码如下:1import java.util.*; 2import
14、 java.io.*;3public class Example3_6 4 5public static void main(String args)6 7float grade=0.0f;8System.out.println(请输入分数:请输入分数:);9Scanner input=new Scanner(System.in); /输入学生成绩输入学生成绩10grade=input.nextFloat();11if(grade=60&grade=60&grade=70&grade=80&grade =90&grade=100)22System.out
15、.print(优秀优秀);23 24 25 JAVA 程序设计程序设计程序两次运行结果如下:请输入分数:87良好-请输入分数:78中等程序分析如下:第1112行是一个if语句。第13到22行实现了if语句的两重嵌套,在成绩不低于60分的情况下区分出了“及格”、“中等”、“良好”、“优秀”四个级别。 JAVA 程序设计程序设计 switch语句语句 当分支情况比较多的时候,可以采用switch语句有效避免判断的多层嵌套。switch语句的语法结构如下:switch(表达式表达式)case 常量常量1: 语句块语句块1; break 标号标号;case常量常量2: 语句块语句块2;break 标号
16、标号;case常量常量n: 语句块语句块n;break 标号标号;default: 语句块语句块n+1; break;case 1defaultcase n语句块语句块n表达式表达式语句块语句块0语句块语句块n+1语句块语句块1 JAVA 程序设计程序设计【例【例3-7】ATM(自动取款机)根据用户的选择,执行不同的操作。(自动取款机)根据用户的选择,执行不同的操作。 程序代码如下:程序代码如下:1import java.util.*;2import java.io.*;3public class Example3_745public static void main(String args)
17、67int biZhong; /币种币种8System.out.println(请选择币种请选择币种: 1人民币人民币; 2美元美元; 3港币港币); /*界面提示界面提示*/9Scanner scanner=new Scanner(System.in); /接收用户输入的数字字符串接收用户输入的数字字符串10biZhong=scanner.nextInt();11switch(biZhong) /根据根据biZhong的不同取值分支的不同取值分支1213case 1: /分支情况分支情况114System.out.println(您选择了人民币您选择了人民币); 15break; /跳出跳出
18、switch结构,向下执行结构,向下执行16case 2: /分支情况分支情况217System.out.println(您选择了美元您选择了美元);18break;19case 3: /分支情况分支情况3 20System.out.println(您选择了港元您选择了港元);21break;22default: /系统默认系统默认23System.out.println(您选择了人民币您选择了人民币);24break;252627 JAVA 程序设计程序设计代码中定义了整型变量代码中定义了整型变量biZhong作为判别变量,使用作为判别变量,使用Scanner对象接收用户的输入。对象接收用户
19、的输入。nextInt方方法接受整数。在每个分支语句中,一定要用法接受整数。在每个分支语句中,一定要用break语句结束。否则,不能跳出语句结束。否则,不能跳出switch结构体结构体,程序将继续执行下一个分支。两次运行,程序将继续执行下一个分支。两次运行Example3_5,结果分别如下:,结果分别如下:请选择币种请选择币种: 1.人民币人民币; 2美元美元; 3 港币港币1您选择了人民币您选择了人民币-请选择币种请选择币种: 1.人民币人民币; 2美元美元; 3 港币港币3您选择了港币您选择了港币程序分析如下:程序分析如下: 程序使用了整型变量作为分支的表达式。如果分支程序中忘记书写程序使
20、用了整型变量作为分支的表达式。如果分支程序中忘记书写break语句,则不能得到语句,则不能得到正确的分支结果。将正确的分支结果。将Example3_5中第中第15和和18行的行的break去掉,运行程序,选择去掉,运行程序,选择“1”得到如得到如下结果:下结果:请选择币种请选择币种: 1人民币人民币; 2美元美元; 3港币港币1您选择了人民币您选择了人民币您选择了美元您选择了美元您选择了港元您选择了港元显然,结果出现了错误。显然,结果出现了错误。 JAVA 程序设计程序设计【例【例3-8】选择不同类型的图像。】选择不同类型的图像。 程序代码如下:程序代码如下:1import java.util
21、.*;2import java.io.*;3public class Example3_845public static void main(String args)67char imageType; /图像类型图像类型8System.out.println(请选择请选择: y灰度图像灰度图像; r,g,b彩色图像彩色图像); /*界面提示界面提示*/9Scanner scanner=new Scanner(System.in); /接收用户输入的数字字符串接收用户输入的数字字符串10imageType=scanner.nextLine().charAt(0);11switch(imageTy
22、pe)1213case y: 14 System.out.println(灰度图像灰度图像);15break;16case r: 17case g:18case b:19System.out.println(彩色图像彩色图像);20break;21default: 22System.out.println(请选择颜色请选择颜色);23break;242526 JAVA 程序设计程序设计程序两次运行结果如下:程序两次运行结果如下:请选择请选择: y灰度图像灰度图像; r,g,b彩色图像彩色图像g彩色图像彩色图像-请选择请选择: y灰度图像灰度图像; r,g,b彩色图像彩色图像y灰度图像灰度图像程
23、序分析如下:程序分析如下:在代码中,使用了在代码中,使用了Scanner的对象的对象scanner获取用户的输入流,获取用户的输入流,并使用方法并使用方法charAt()得到字符串中的第一个字符。得到字符串中的第一个字符。“r”、“g”和和“b”三种情况下执行同一语句块,均得到三种情况下执行同一语句块,均得到“彩色图像彩色图像”结论。结论。 JAVA 程序设计程序设计循环结构循环结构 循环结构是编程语言中的基本结构之一,Java语言中三种重要的循环结构包括:for语句、while语句、do while语句。for语句和while语句具有相似的语法结构,差别在与while循环的判断语句为取布尔值
24、的表达式,为真时运行循环体;for循环中的判断语句由三部分构成,即:迭代变量的初始化、循环终止条件和迭代步。 JAVA 程序设计程序设计truefalse循环体循环体条件表达式条件表达式语句块语句块0falsetrue循环体条件表达式语句块语句块0(a) for语句或语句或while语句语句 (b) do while语句语句 JAVA 程序设计程序设计for语句语句 for语句具有如下的语法结构。for(表达式表达式1;条件表达式条件表达式;表达式表达式2)语句块语句块; JAVA 程序设计程序设计表达式表达式1;for(;条件表达式条件表达式;表达式表达式2)语句块语句块;或者或者表达式表达
25、式1;for(;条件表达式条件表达式;)语句块语句块;表达式表达式2; JAVA 程序设计程序设计【例【例3-9】计算】计算10的阶乘(的阶乘(n=10)。)。程序代码如下:程序代码如下:1public class Example3_923public static void main(String args)45int result=1; /初始结果值初始结果值6for(int i=1;i11;i+) /结束条件结束条件i1178result*=i; /将一步计算结果赋给将一步计算结果赋给result910System.out.println(计算结果计算结果result=+result);
26、 /输出输出11程序运行结果如下:程序运行结果如下:计算结果计算结果result=3628800程序分析如下:程序分析如下:整型变量整型变量i可以在可以在for循环体中声明,也可以在循环体中声明,也可以在for之前声明,然后在之前声明,然后在for表达式中表达式中使用。二者的区别在于:使用。二者的区别在于:for循环外声明的变量循环外声明的变量i的作用域为整个类;而的作用域为整个类;而for表达式表达式中声明的变量中声明的变量i仅在循环体内有效。在程序的每一次循环之后,仅在循环体内有效。在程序的每一次循环之后,result得到新的值得到新的值result*i。如此下去,当。如此下去,当i=10
27、时,即得时,即得10!。当!。当i=11时,判断条件时,判断条件“i11”不成立不成立,退出,退出for循环体,输出结果。循环体,输出结果。 JAVA 程序设计程序设计【例3-10】计算Fibonacci(斐波那契)数列100以内的值。无穷数列1,1,2,3,5,8,13,21,34,55,称为斐波那契数列。递归定义如下: 1,01,112 ,1nF nnF nF nn JAVA 程序设计程序设计程序代码如下:程序代码如下:1public class Example3_1023public static void main(String args)45int numF3=0; 6int num
28、F1=1; /初始值初始值7int numF2=1; /初始值初始值8System.out.println(斐波那契数斐波那契数:+numF1); /输出结果输出结果9System.out.println(斐波那契数斐波那契数:+numF2); /输出结果输出结果10for(int n=0; n8; n+) /结束条件结束条件1112 numF3 = numF1+ numF2;13 System.out.println(斐波那契数斐波那契数:+numF3); /输出结果输出结果14 numF1 = numF2; /注意此句和下一句的先后顺序注意此句和下一句的先后顺序15 numF2 = num
29、F3; 161718 JAVA 程序设计程序设计程序运行结果如下:程序运行结果如下:斐波那契数斐波那契数:1斐波那契数斐波那契数:1斐波那契数斐波那契数:2斐波那契数斐波那契数:3斐波那契数斐波那契数:5斐波那契数斐波那契数:8斐波那契数斐波那契数:13斐波那契数斐波那契数:21斐波那契数斐波那契数:34斐波那契数斐波那契数:55程序分析如下:程序分析如下:合理地转换递归公式中的因变量合理地转换递归公式中的因变量F(n)和自变量和自变量n为程序变量是编程实现的为程序变量是编程实现的关键。在例关键。在例3-13中,第中,第14和和15行不能颠倒,否则出现计算错误。可以思行不能颠倒,否则出现计算错
30、误。可以思考一下是否有其他方法的实现斐波那契数列。考一下是否有其他方法的实现斐波那契数列。 JAVA 程序设计程序设计while语句语句 while语句具有如下的语法结构。语句具有如下的语法结构。while(条件表达式条件表达式)语句块语句块;while为关键字。条件表达式的值为布尔值,为真时才为关键字。条件表达式的值为布尔值,为真时才执行循环体中的语句,否则,不执行。条件表达式执行循环体中的语句,否则,不执行。条件表达式可以是布尔值、关系表达式、逻辑表达式、返回布可以是布尔值、关系表达式、逻辑表达式、返回布尔值的方法等。尔值的方法等。 JAVA 程序设计程序设计【例【例3-11】求】求1到到
31、100之间所有整数之和。之间所有整数之和。程序代码如下:程序代码如下:1public class Example3_11 23public static void main(String args)45int sum=0;6int i=1; /必须初始化必须初始化7while(i=100) /循环体开始循环体开始89sum += i;i+;10 /循环体结束循环体结束11System.out.println(1+2+100 = + sum); /输出结果输出结果1213 程序运行结果如下:程序运行结果如下: 1+2+100 = 5050 JAVA 程序设计程序设计【例【例3-12】某人在银行有
32、存款】某人在银行有存款30万元,按照年利率万元,按照年利率5%计算,问多少年后资金才能翻番。计算,问多少年后资金才能翻番。程序代码如下:程序代码如下:1public class Example3_12 23public static void main(String args)45double saveMoney=300000; /初始存款初始存款6double temSave=saveMoney; /中间变量中间变量7double yearRate=0.05; /年利率年利率8int nYears=0; /年数年数9while(temSave10);12System.out.print(天数
33、天数:+i+“天天“);1314 程序运行结果如下:程序运行结果如下:天数天数:8天天 JAVA 程序设计程序设计循环嵌套循环嵌套 不同的循环结构可以嵌套,形成多重循环。下面给出一些常用的两重循环不同的循环结构可以嵌套,形成多重循环。下面给出一些常用的两重循环的语法格式:的语法格式:for(表达式表达式1;条件表达式条件表达式1;表达式表达式2)for(表达式表达式3;条件表达式条件表达式2;表达式表达式4)语句块语句块; 或或while(条件表达式条件表达式1)while(条件表达式条件表达式2)语句块语句块; JAVA 程序设计程序设计或或dodo语句块语句块;while(条件表达式条件表
34、达式1)while(条件表达式条件表达式2) JAVA 程序设计程序设计【例【例3-14】寻找】寻找20000以内的完全数。以内的完全数。程序代码如下:程序代码如下:1public class Example3_14 23public static void main(String args)45int i=2; /赋初值赋初值6do/第一个循环体第一个循环体78int sum=0;9int j=1; while(ji) /第二个循环体第二个循环体 12if(i%j=0) sum+=j; /若若j是是i的因子,累加的因子,累加13j+;14 if(sum=i) /若是完全数则输出若是完全数则输
35、出 System.out.print(i+String.valueOf(t);17i+;18while(i=1);14System.out.println(); /println实现换行实现换行15i-;16while(i=1);1718 JAVA 程序设计程序设计程序输出结果如下:*程序分析如下:程序输入结果如上图所示。程序按照递减方式首先定位在第i行,然后用变量j的递减循环方式打印2*i-1个*号。判断条件为i,j不小于1。请思考如何使用while或者for循环实现上述过程。 JAVA 程序设计程序设计跳转结构跳转结构 中断语句中断语句break 具有如下的语法格式:break 标号标号;
36、其中标号为可选项。不带标号的语句只能跳出当前分支结其中标号为可选项。不带标号的语句只能跳出当前分支结构或者循环结构,带有标号的可以跳出多重嵌套。带有构或者循环结构,带有标号的可以跳出多重嵌套。带有标号的标号的break语句在特殊场合有用途。语句在特殊场合有用途。 JAVA 程序设计程序设计【例【例3-16】在无限循环中用】在无限循环中用break实现强制跳出。实现强制跳出。程序代码如下:程序代码如下:1public class Example3_16 23public static void main(String args)45int i=1, sum=0;6while(true)78sum
37、 += i*i;9i+;10if(i1000) 11break;1213System.out.println(sum=+sum);14程序输出结果如下:程序输出结果如下:sum=338350 JAVA 程序设计程序设计【例【例3-17】分析程序的输出结果。】分析程序的输出结果。程序代码如下:程序代码如下:1public class Example3_1723public static void main(String args)45 labelA:6 7 System.out.println(labelA begin);8labelB:9 for(int i=0;i1;i+)1011 Syst
38、em.out.println(labelB begin);12 labelC:13 for(int j=0;j1;j+)14 15System.out.println(labelC begin);16break labelB;17 /标签标签labelC结束结束18System.out.println(labelB End);19 /标签标签labelB结束结束20System.out.println(labelA End);21 /标签标签labelA结束结束22 System.out.println(programming End);23 /程序结束程序结束24 JAVA 程序设计程序设计
39、程序输出结果如下:程序输出结果如下:labelA beginlabelB beginlabelC beginlabelA Endprogramming End程序分析如下:程序分析如下:例例3-15实现了带标号的实现了带标号的break语句。由于语句语句。由于语句“break labelB;”将执行步骤跳出将执行步骤跳出labelB标签的结标签的结构体,因此,该程序中并未输出语句构体,因此,该程序中并未输出语句“labelB End”。 JAVA 程序设计程序设计继续语句继续语句continue 表示形式如下:表示形式如下:continue 标号标号;不带标号的不带标号的continue语句将
40、结束本次循环,不执行其所在结语句将结束本次循环,不执行其所在结构内位于其后面的语句,然后转去判断是否执行下一次构内位于其后面的语句,然后转去判断是否执行下一次循环。循环。 JAVA 程序设计程序设计【例【例3-18】continue语句的跳转功能举例。语句的跳转功能举例。程序代码如下:程序代码如下:1public class Example3_1823public static void main(String args)45int i=0, m=0, n=0;6while(i10)78m+;9i+;10if(i%2=0)11continue; 12System.out.println(m=+
41、m+String.valueOf(t);13n+;141516 程序输出结果如下:程序输出结果如下:m=1 m=3 m=5 m=7 m=9程序分析如下:程序分析如下:当当i为奇数时,程序输出结果为奇数时,程序输出结果m的值。当的值。当i为偶数的时候,执行为偶数的时候,执行continue语句,忽略打印输出语句,忽略打印输出行和行和n+行,执行行,执行i+后,回到起初的后,回到起初的while循环体判断是否执行下一步。循环体判断是否执行下一步。 JAVA 程序设计程序设计【例【例3-19】带标签】带标签continue语句的跳转功能举例。语句的跳转功能举例。程序代码如下:程序代码如下:1publ
42、ic class Example3_1923public static void main(String args)45int i=3,j=2;6HERE:7while(i8)89i+;10while(ji)1112if(i%j=0)13 continue HERE;14System.out.println(i=+i+String.valueOf(t); 15j+;16171819 程序输出结果如下:程序输出结果如下: i=5i=5i=5i=6i=7i=8程序分析如下:程序分析如下: 初始时初始时i为为3,进入循环,进入循环i增增1,满足,满足i%j=0,在第,在第13行程序代码处直接跳转到行
43、程序代码处直接跳转到HERE所在处所在处继续执行,此时,第继续执行,此时,第14和和15行没有执行。当行没有执行。当i=5时,条件时,条件i%j=0不满足,执行第不满足,执行第14行程序行程序代码,输出代码,输出i=5。如此进行,得到最终的输出。如此进行,得到最终的输出。 JAVA 程序设计程序设计数组应用数组应用 数组的定义数组的定义 数组是数组是Java中重要的数据类型,由若干个相同数据类型的元素按照中重要的数据类型,由若干个相同数据类型的元素按照一定顺序排列而成。数组中的元素可以是基本类型数据的变量,也一定顺序排列而成。数组中的元素可以是基本类型数据的变量,也可以是类对象实例。数组元素通
44、过数组名和下标定位,下标从可以是类对象实例。数组元素通过数组名和下标定位,下标从0开始开始,数组的长度即为数组元素的个数。在给数组赋值前需要分配内存,数组的长度即为数组元素的个数。在给数组赋值前需要分配内存空间和判定边界。空间和判定边界。1. 一维数组一维数组定义格式为:定义格式为:类型类型 数组名数组名;或者或者类型类型 数组名数组名;或者或者类型类型 数组名数组名=new 类型类型行数行数;其中:类型指明数组中元素的类型,可以是基本数据类型、类类型其中:类型指明数组中元素的类型,可以是基本数据类型、类类型、结构类型等。、结构类型等。 JAVA 程序设计程序设计表表3-1. 不同数据类型数组
45、的默认初值不同数据类型数组的默认初值数据类型数据类型默认值默认值布尔型false整型0浮点型0.0f或者0.0d字符型0类对象null JAVA 程序设计程序设计2. 二维数组二维数组二维数组可以看作数组的数组,即每个一维数组元素也是一个一维数组。声明格式如下:类型类型 数组名数组名;或者类型类型 数组名数组名;或者类型类型 数组名数组名;二维数组的创建格式如下:数组名数组名 = new 类型类型行数行数列数列数 JAVA 程序设计程序设计数组的运算数组的运算 数组初始化分为静态初始化和动态初始化。静态初数组初始化分为静态初始化和动态初始化。静态初始化是在定义数组的同时进行,适合任何对象,每始
46、化是在定义数组的同时进行,适合任何对象,每个元素对应一个引用。个元素对应一个引用。 动态初始化使用动态初始化使用new函数为数组分配空间,然后给函数为数组分配空间,然后给每个元素赋值。如果没有给数组赋值,系统为其分每个元素赋值。如果没有给数组赋值,系统为其分配了初始默认值。配了初始默认值。 当被分配空间之后,数组的长度当被分配空间之后,数组的长度length随之确定,随之确定,不能改变大小。程序运行时使用该变量进行越界检不能改变大小。程序运行时使用该变量进行越界检查。查。 JAVA 程序设计程序设计【例【例3-20】一维数组初始化,每个元素为类对象。】一维数组初始化,每个元素为类对象。程序代码
47、如下:程序代码如下:1public class Example3_2023public static void main(String args) 45/静态初始化静态初始化6Member persons = 7 new Member(1, 男男, 张三张三, 67), 8 new Member(2, 男男, 李四李四, 75), 9; 10for(int i=0;ipersons.length;i+)1112 System.out.println(personsi); 13 /动态初始化动态初始化 14 Member persons2 = new Member3; 15 for (int j
48、=0; j2; j+)16 17 persons2j=new Member(j+3, 男男, 王五王五, 80); 18 System.out.println(persons2j); 19 20 21 22 JAVA 程序设计程序设计23 /类声明类声明24 class Member25 26int number; 27char gender;28String name;29float grade;30Member (int number, char gender, String name, float grade) 31 32this.number = number; 33this.gend
49、er = gender; 34 = name; 35this.grade = grade; 36 37public String toString() 38 39return +number+; +gender+; + name+; + grade; 40 41 JAVA 程序设计程序设计程序运行结果如下:程序运行结果如下:1; 男男; 张三张三; 67.03; 男男; 王五王五; 80.04; 男男; 王五王五; 80.02; 男男; 李四李四; 75.03; 男男; 王五王五; 80.04; 男男; 王五王五; 80.0 程序分析如下:程序分析如下:在该程序中,定义了类在
50、该程序中,定义了类Member和类型的变量。变量的初始化和类型的变量。变量的初始化采用了静态初始化和动态初始化两种方式。采用了静态初始化和动态初始化两种方式。length是变量是变量persons的一个成员,存储了数组的长度信息。的一个成员,存储了数组的长度信息。 JAVA 程序设计程序设计【例【例3-21】一维数组的冒泡排序举例。】一维数组的冒泡排序举例。程序代码如下:程序代码如下:1public class Example3_2123public static void main(String args) 45int numbers=1, 41, 2, 7, 22, 52, 978, 43
51、, 64; /初始化初始化6int len=numbers.length; /数组的长度数组的长度7int i=0, j, temp;8while(ilen-1) /外层循环外层循环9 10j=0;11while(j numbersj+1)1516temp = numbersj; 17numbersj = numbersj+1; 18 numbersj+1 = temp; 19 20j+;21 22i+;2324for (int k=0; klen; k+) /输出排序好的数据输出排序好的数据25 System.out.print (numbersk+String.valueOf(t);26
52、27 JAVA 程序设计程序设计程序运行结果如下:程序运行结果如下:1272241435264978程序分析如下:程序分析如下:程序使用两重循环依次交换相邻两个位置的元素。程序使用两重循环依次交换相邻两个位置的元素。length是数组是数组numbers的成员变量,表示数组的长度的成员变量,表示数组的长度。中间变量。中间变量temp 用来临时存储数组的数据。用来临时存储数组的数据。 JAVA 程序设计程序设计【例【例3-22】利用二维数组查询学生成绩中的最低分和最高分。】利用二维数组查询学生成绩中的最低分和最高分。程序代码如下:程序代码如下:1import java.util.*;2publi
53、c class Example3_2234/主程序主程序5public static void main(String args)67 String name=张三张三,王五王五,李四李四,赵七赵七,刘八刘八; 8 float grade=50,60,70,40,90,80,66,83,90, 80,90,10, 60,33,96; /存储五名学生三门课程的成绩存储五名学生三门课程的成绩9 System.out.println(最低分数最低分数:+ MinGrade(grade);10 System.out.println(最高分数最高分数:+ MaxGrade(grade);11 12 /求
54、所有成绩中的最低分求所有成绩中的最低分13public static float MinGrade(float grades)1415float leastGrade =100;16int i=0, j;17while(igrades.length) /按行循环按行循环1819j=0;20while(jgradesi.length) /按列循环按列循环 JAVA 程序设计程序设计2122if(gradesij leastGrade)23leastGrade=gradesij; 24j+;2526i+;2728return leastGrade;2930/求所有成绩中的最高分求所有成绩中的最高分
55、31public static float MaxGrade(float grades)3233float highestGrade=0;34for(int i=0;igrades.length;i+)3536for(int j=0;j highestGrade)39highestGrade=gradesij; 404142return highestGrade; 43 44 JAVA 程序设计程序设计程序运行结果如下:最低分数:10.0最高分数:96.0程序分析如下:程序实现了简单的学生成绩管理,使用了两个静态子函数MinGrade()和MaxGrade()计算所有分数中的最大值和最小值。在
56、每个子函数中使用了两重循环计算最大或者最小值。二维数组grades的第一维存储学生信息,第二维存储学生的各门成绩信息。程序中grades.length表示grades的总行数,gradesi.length表示grades的第i行中元素的个数。 JAVA 程序设计程序设计字符串处理字符串处理 字符串的定义和赋值字符串的定义和赋值 String类和StringBuffer类分别用来创建字符串常量和字符串变量。格式定义如下:类型类型 字符串名字符串名;或者类型类型 字符串名字符串名=字符串值字符串值;或者使用字符串构造器String(),类型类型 字符串名字符串名=new String();类型类型
57、 字符串名字符串名=new StringBuffer(); JAVA 程序设计程序设计1. String类的构造方法类的构造方法除了上面的定义形式,还有一些其他的重载形式可以用来对字除了上面的定义形式,还有一些其他的重载形式可以用来对字符串变量赋值,例如:符串变量赋值,例如: (1)String(byte byte):提取数组中元素组成字符串;:提取数组中元素组成字符串;(2)String(byte bytes, int offset, int length):从数组中:从数组中“offset”指定的偏移位置开始,取指定的偏移位置开始,取“length”长度的字符构成长度的字符构成字符串。字符
58、串。(3)String(char value):将字符数组:将字符数组value的值组成字符串的值组成字符串。(4)String(char value,int offset,int count):从字符数组:从字符数组中中“offset”指定的偏移位置开始,取指定的偏移位置开始,取“count”长度的字符构长度的字符构成字符串。成字符串。下面给出了一些赋值的例子。下面给出了一些赋值的例子。String myString = my + school; String hisString = myString + is near my home;StringBuffer yourString;Str
59、ing str1 = new String(); /创建空串创建空串 JAVA 程序设计程序设计2. StringBuffer类的构造方法类的构造方法 Java默认构造器的容量是默认构造器的容量是16个字符。有以下重载形式:个字符。有以下重载形式:(1) StringBuffer(int x):设定缓冲字符串的容量。容量和长度:设定缓冲字符串的容量。容量和长度不一样,长度是实际字符串赋值长度。如果长度不一样,长度是实际字符串赋值长度。如果长度x小于小于0,则,则触发异常。例如:触发异常。例如:StringBuffer mystring1=new StringBuffer(100); /定义一个
60、容量定义一个容量大小为大小为100字符串。字符串。(2) StringBuffer(String str):用一个字符串常量来创建:用一个字符串常量来创建StringBuffer类的对象。例如:类的对象。例如:StringBuffer mystring2=new StringBuffer(my ); /*初始化一初始化一个个StringBuffer类型字符串,并赋初值为类型字符串,并赋初值为“my”。*/ JAVA 程序设计程序设计 字符串的基本运算字符串的基本运算 字符串有一些基本的运算,下面主要针对字符串有一些基本的运算,下面主要针对String类型加以介绍,类型加以介绍,StringBuffer类型具有类似的方法。类型具有类似的方法。1. 串连
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025海南昌江昌粮储备有限公司招聘工作人员(第3号)模拟试卷及参考答案详解
- 2025河南郑州高新区双桥社区卫生服务中心招聘3人模拟试卷完整答案详解
- 2025河南郑州海康威视郑州招聘模拟试卷及答案详解(名校卷)
- 2025年输电线路铁塔项目建议书
- 2025福建漳州漳州市芗城区行政事业单位国有资产中心招募2人考前自测高频考点模拟试题及完整答案详解
- 2025年甘肃武威凉州区高坝镇人民政府招聘专业化管理大学生村文书考前自测高频考点模拟试题及答案详解(夺冠系列)
- 2025年甘肃省陇南市徽县柳林镇卫生院招聘考前自测高频考点模拟试题及1套参考答案详解
- 供货合作协议书范本5篇
- 2025贵州铜仁市玉屏侗族自治县事业单位综合管理类引进高层次及急需紧缺人才12人模拟试卷完整参考答案详解
- 2025贵州省重点产业人才“蓄水池”第一批岗位专项简化程序招聘187人考前自测高频考点模拟试题带答案详解
- 车间师带徒管理办法
- 事业位协议班培训合同
- 2025年中国50岁以上成年人益生菌行业市场全景分析及前景机遇研判报告
- 第9课《天上有颗南仁东星》公开课一等奖创新教学设计
- 腹部外伤文库课件
- 医院门诊急诊统筹管理方案
- 胃肠外科医生进修汇报
- 2025高级会计职称考试试题及答案
- 贵阳辅警管理办法
- 慢病健康宣教课件
- 生产领班的工作职责
评论
0/150
提交评论