第四章 循环语句
4.1 while循环
-
while语句
while(循环继续条件){ //循环体 语句(组); }
循环条件总是放在圆括号内。只有当循环体只包含一条语句或不包含语句时,循环体的花括号才可以省略。
-
示例:猜数字
代码如下:public static void main(String[] args){ //1.生成随机数 int number=(int)(Math.random()*101); System.out.println("Guess a magic number between 0 and 100:"); Scannaer scanner=new Scanner(System.in); //获取用户输入的值 //循环初始化 System.out.print("Enter you guess:"); int num=scanner.nextInt(); while(num!=number){//循环条件 if(num<number){ System.out.println("too low!"); }else{ System.out.println("too hight"); } System.out.print("Enter you guess:"); int num=scanner.nextInt(); } System.out.println("Yes the number is "+number); }
4.2 do-while循环
-
do-while语句
do { //循环体; 语句(组); } while (循环继续条件);
4.3 for循环
-
for语句
for(初始操作;循环继续条件;每次迭代后的操作){ //循环体 语句(组); }
-
for嵌套语句
-
示例:预测未来学费
假设某个大学今年的学费是10000美元,而且以每年7%的速度增加。多少年后学费会翻倍?
代码:public static void main(String[] args){ double tuition=10000;// year=0 int year=0; while(tuituion<20000){ tuiution=tuition*1.07; year++; } System.out.print("Tuition will be double in "+year+" year"); }
-
示例:将十进制转换为十六进制
代码:punlic static void main(String[] args){ Scanner scanner=new Scanner(System.in); //提示用户输入一个十进制数 System.out.print("Enter a decimal number: "); int number=input.next.Int(); String hex=" "; while(number !=0){ int hexValue=number%16; char hexDidit=(hexValue<=9&&hexValue>=0)?(char)(hexValue+'0'):(char)(hexValue-10+'A'); hex=hexDight+hex; number=number/16; } System.out.println("The hex number is "+hex); }
4.4 嵌套循环
-
示例:打印直角三角形
代码:public static void main(String[] args){ /* * * * ** * *** * **** * ***** */ for(int i=1;i<=5;i++){ for(int j=1;j<=i;j++){ System.out.print("*"); } System.out.println(); } }
-
示例:打印菱形
代码:public static void main(String[] args){ for(int i=1;i<=7;i++){ for(int j=1;j<=1-i;j++){ System.out.print(""); } for(int j=8-i;j>=1;j--){ System.out.print("*"); } System.out.println(); } }
-
示例:打印空心菱形
代码:
public static void main(String[] args) {
for(int i=1;i<=9;i++){
for(int k=1;k<=Math.abs(i-5);k++){
System.out.print(" ");
}
for(int j=1;j<=i&&(i+j)<=10;j++){
if(j==1||j==i||j+i==10){
System.out.print("* ");
}else{
System.out.print(" ");
}
}
System.out.println();
}
}
4.5 break和在这里插入代码片continue
-
break语句
跳出整个循环 -
continue语句
跳出循环当前迭代
continue语句总是在一个循环内。在while和do-while循环中,continue语句之后马上计算循环继续条件;而在for循环中,continue语句之后会立即先执行每次迭代后的动作,再计算循环继续条件。 -
示例:判断回文串
代码:public static void main(String[] args){ //读取用户输入的字符串 Scanner input=new Scanner(System.in); System.out.print("Enter a string: "); String s=input.nextLine(); //第一个字符 记为0 int low=0; //最后一个字符记为总长度-1 int hight=s.lenght()-1; //默认是回文 boolean isPalindrome=ture; while(low<hight){ if(s.charAt(low)!=s.charAt(hight)){ isPalindrome=false; break; } low++; hight--; } if(isPalindrome) System.out.println(s+" is a palindrome"); else System.out.println(s+" is not a palindrome"); }
-
示例:显示素数
分五行显示前50个素数,每行包括10个数字。
代码:public static void main(String[] args){ int count=0;//计算素数的个数 int number=1; while(count<=50){//计算素数 boolean flag=true; for(int i=2;i<=number/2;i++){ if(number%i==0){ flag=false; break; } } if(flag){ count++; System.out.print(number+" "); if(count%10==0){ System.out.println(); } } number++; }
4.6 函数的重载
在同一类中 如有同名函数 则称之为函数之间为重载关系
重载的前提是 函数重名
与 修饰符 返回值类型 参数列表没有关系
仅仅和参数列表中 参数类型的排列组合有关系
本章小结
1、循环语句有三类:while循环、do-while循环和for循环。
2、循环中包含重复执行的语句的部分称为循环体。
3、循环体执行一次称为循环的一次迭代。
4、无限循环是指循环语句被无限执行。
5、在设计循环时,既需要考虑循环控制结构,还需要考虑循环体。
6、while循环首先检查循环继续条件。如果条件为true,则执行循环;如果条件为false,则循环结束。
7、do-while循环与while循环类似,只是do-while循环先执行循环体;然后再检查循环继续条件,以确定是继续还是终止。
8、while和do-while循环常用于循环次数不确定的情况。
9、标记值是一个特殊的值,用来标记循环的结束。
10、for循环一般用在循环体执行次数固定的情况。
11、for循环控制由三部分组成。第一部分是初始操作,通常用于初始化控制变量。第二部分是循环继续条件,决定是否执行循环体。第三部分是每次迭代后执行的造作,经常用于调整控制变量。通常,在控制结构中初始化和修改循环控制变量。
12、while循环和for循环都称为前测循环(pretest loop),因为在循环体执行之前,要检测一下循环继续条件。
13、do-while循环称为后侧循环(postteat loop),因为在循环体执行之后,要检测一下这个条件。
14、在循环中可以使用break和continue这两个关键字。
15、在关键字break立即终止包含break的最内层循环。
16、关键字continue只是终止当前迭代。
代码
Text4_1
代码:1
public static void main(String[] args) {
int number=(int) (Math.random()*101);
System.out.println("Guess a magic number between 0 and 100");
Scanner scanner=new Scanner(System.in);
System.out.print("Enter your guess:")
int num=scanner.nextInt();
while(num!=number){
if(num<number){
System.out.println("Your guess is too low");
}else{
System.out.println("Your guess is too high");
}
System.out.print("Enter your guess:");
num=scanner.nextInt();//更新num
}
System.out.println("Yes the number is "+number);
2
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("Guess a number between 0 and 100");
int number=(int) (Math.random()*101);
while(true){
System.out.print("Enter a number:");
int num=scanner.nextInt();
if(num>number){
System.out.println("too high");
}else if(num<number){
System.out.println("too low");
}else{
System.out.println("Yes the number is "+number);
break;
}
}
}
3
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int number=(int) (Math.random()*101);
int num=0;
do{
System.out.print("Enter a guess:");
num=scanner.nextInt();
if(num<number){
System.out.println("too low");
}else if(num>number){
System.out.println("too high");
}
}while(num!=number);
System.out.println("Yes the number is "+number);
}
Text4_4十进制转十六进制
代码:
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.print("Enter a number:");
int number=scanner.nextInt();
String str="";
while(number!=0){
int num=number%16;
if(num<10){
str=num+str;
}else{
switch(num){
case 10:
str='A'+str;
break;
case 11:
str='B'+str;
break;
case 12:
str='C'+str;
break;
case 13:
str='D'+str;
break;
case 14:
str='E'+str;
break;
case 15:
str='F'+str;
break;
}
}
number/=16;
}
System.out.println("0X"+str);
}
Text4_7
代码:
public static void main(String[] args) {
int count=0;
int number=1;
while(count<=50){
boolean flag=true;
for(int i=2;i<number/2;i++){
if(number%i==0){
flag=false;
break;
}
}
if(flag){
count++;
System.out.print(number+" ");
if(count%10==0){
System.out.println();
}
}
number++;
}
}