Day05
一、Java的执行语句(续)
1.循环语句
1.for循环
语法规则:
for(表达式1;表达式2;表达式3){
…代码块/循环体…
}理解:
表达式1 - 初始化变量
表达式2 - 判断条件
表达式3 - 更新变量执行步骤:
初始化变量
判断条件 - 结果必须是boolean类型
2.1 true - 执行代码块,更新变量,重复第2个步骤
2.2 false - 直接跳出循环体for循环变形:
int i = 0;
for(;i<5;){
System.out.println("用良心做教育 – " + i);
i++;
}
System.out.println(i);java">//死循环:for(;;){System.out.println("死循环");}for(;true;){System.out.println("死循环");}//伪死循环:for(int i = 0;i>=0;i++){System.out.println("伪死循环");}
- 案例:循环录入5次int类型的数字,输出总和
java">import java.util.Scanner; public class Test{public static void main(String[] args){Scanner scan = new Scanner(System.in);int sum = 0;for(int i = 1;i<=5;i++){System.out.println("请输入第" + i + "个数字:");int num = scan.nextInt();sum += num;//sum = (int)(sum+num)}System.out.println("总和为:" + sum);} }
小结:
- 初始化变量不一定从0开始
- 更新变量不一定++
- 在for循环中声明的变量只能在当前for循环里使用
- for循环里的更新变量中编写i++和++i没有区别
2.for循环嵌套(使用“*”打印三角形)
1.打印以下图形
java">public class Test{public static void main(String[] args){for(int i = 0;i<3;i++){for(int j = 0;j<4;j++){System.out.print("*");}System.out.println();}} }
2.打印以下图形
java">public class Test{public static void main(String[] args){for(int i = 0;i<5;i++){for(int j = 0;j<=i;j++){System.out.print("*");}System.out.println();}} }
3.打印以下图形
java">public class Test{public static void main(String[] args){for(int i = 0;i<5;i++){for(int k = 0;k<4-i;k++){System.out.print(" ");}for(int j = 0;j<=i;j++){System.out.print("*");}System.out.println();}} }
4.打印以下图形
java">public class Test{public static void main(String[] args){for(int i = 0;i<5;i++){for(int j = 0;j<5-i;j++){System.out.print("*");}System.out.println();}} }
5.打印以下图形
java">public class Test{public static void main(String[] args){for(int i = 0;i<5;i++){for(int k = 0;k<i;k++){System.out.print(" ");}for(int j = 0;j<5-i;j++){System.out.print("*");}System.out.println();}} }
6.打印以下图形
java">public class Test{public static void main(String[] args){for(int i = 0;i<4;i++){for(int k = 0;k<3-i;k++){System.out.print(" ");}for(int j = 0;j<i*2+1;j++){System.out.print("*");}System.out.println();}} }
7.打印以下图形
java">public class Test{public static void main(String[] args){for(int i = 0;i<4;i++){for(int k = 0;k<3-i;k++){System.out.print(" ");}for(int j = 0;j<i*2+1;j++){if(i==0 || i==3 || j==0 || j== i*2){System.out.print("*");}else{System.out.print(" ");}}System.out.println();}} }
8:打印以下图形
java">public class Test{public static void main(String[] args){for(int i = 0;i<4;i++){for(int k = 0;k<i;k++){System.out.print(" ");}for(int j = 0;j<7-i*2;j++){System.out.print("*");}System.out.println();}} }
9:打印以下图形
java">public class Test{public static void main(String[] args){for(int i = 0;i<4;i++){for(int k = 0;k<i;k++){System.out.print(" ");}for(int j = 0;j<7-i*2;j++){if(i==0 || i==3 || j==0 || j== 7-i*2-1){System.out.print("*");}else{System.out.print(" ");}}System.out.println();}} }
10.九九乘法表
java"> public class Test{public static void main(String[] args){for(int i = 1;i<=9;i++){ for(int j = 1;j<=i;j++){System.out.print(j + "x" + i + "=" + (i*j) + "\t");}System.out.println();}}}
java">public class Test{public static void main(String[] args){for(int i = 1;i<=9;i++){for(int k = 1;k<i;k++){System.out.print("\t");}for(int j = i;j<=9;j++){System.out.print(i + "x" + j + "=" + (i*j) + "\t");}System.out.println();}} }
运行结果:
3.while循环
语法结构:
while(表达式){
…代码块…
}
理解:表达式的结果必须是boolean类型
true – 执行代码块
false - 跳出整个循环
死循环:
while(true){
System.out.println(“死循环”);
}
案例:每月存3000,每年递增1000元,多少个月后存满20万
java">public class Test{public static void main(String[] args){int allMoney = 0;int money = 3000;int month = 0; while(allMoney < 200000){allMoney += money;month++;if(month % 12 == 0){money+=1000;}}System.out.println(month + "个月后存满20万");System.out.println(money);} }
小结:while循环可以做到for循环的功能
4.do-while循环
语法结构:
do{
…代码块…
}while(表达式);
理解:
先执行一遍代码块,再判断表达式
表达式的结果必须是boolean类型
true – 执行代码块
false - 跳出整个循环
小结:
- do-while先循环一遍,再判断
- 在代码块中声明的变量不能在外面使用
5.for , while 以及 do-while的区别
表达式的区别:
for(初始化变量;判断条件;更新变量){}
while(判断条件){}
do{}while(判断条件);
注意:三大循环的判断条件,如果是true就执行代码块,如果是false就跳出循环
执行顺序的区别:
for:先判断,再执行
while:先判断,再执行
do-while:先执行一遍,再判断
应用场景的区别:
for:循环次数确定时
while:循环次数不确定时,先判断,再执行
do-while:循环次数不确定时,先执行一遍,再判断
2.特殊的流程控制语句
1.特殊的流程控制语句 – break
含义:作用于循环中,表示跳出/结束当前循环
实验:
while(true){
System.out.println(“111”);
System.out.println(“222”);
if(true){
break;
}
System.out.println(“333”);
}
案例:循环录入学生5门课的成绩并计算平均分,
如果某分数录入为负,停止录入并提示。java">import java.util.Scanner; public class Test{ public static void main(String[] args){Scanner scan = new Scanner(System.in);boolean flag = true;//true-正常录入 false-非正常录入double sum = 0;for(int i = 1;i<=5;i++){System.out.println("请输入第" + i + "门成绩:");double score = scan.nextDouble();if(score < 0){flag = false;break;}sum += score;}if(flag){double avg = sum/5;System.out.println("平均分为:" + avg);}else{System.out.println("分数为负数,停止录入");}} }
2.特殊的流程控制语句 – continue
含义:作用于循环中,表示跳过循环体剩余部分,进入到下一次循环中
实验:
while(true){
System.out.println(“111”);
System.out.println(“222”);
if(true){
continue;
}
System.out.println(“333”);
}
案例:循环录入5名学生的成绩,统计分数大于等于80分的学生比例。
java">import java.util.Scanner; public class Test{ public static void main(String[] args){Scanner scan = new Scanner(System.in);boolean flag = true;double a = 5;for(int i = 1;i<=5;i++){System.out.println("请输入第" + i + "个同学成绩:");double score = scan.nextDouble();if(score<80){a--;continue;}if(score < 0){flag = false;break;} }if(flag){double ratio = a/5*100;System.out.println("大于等于80分的学生比例:" + ratio+"%");}else{System.out.println("分数为负数,停止录入");}} }
3.特殊的流程控制语句 – return
含义:作用于方法中,表示结束当前方法
实验:
System.out.println(“111”);
System.out.println(“222”);
if(true){
return;
}
System.out.println(“333”);
4.特殊的流程控制语句 – label
理解:给循环做标记
需求:
外层循环5次,内层循环3次,当外层循环到第2次时,在内层循环中关闭掉外层循环java">public class Test{ public static void main(String[] args){a:for(int i = 1;i<=5;i++){for(int j = 1;j<=3;j++){System.out.println(i + " -- " + j);if(i == 2){break a;//跳出指定循环}}}} }