学完循环结构了。记录下for语句,while语句和do-while语句的比较和死循环/循环嵌套/循环终止/循环跳转的使用心得。
循环结构的定义:控制某种代码的重复执行
执行逻辑为:先判断再执行,表达结构如下
for(初始量;循环条件;迭代条件){需要重复的代码}
例:通过for语句输入三次“我是无敌No.1”
for(double x = 1 ; x <= 3; x++){
System.out.println("我是无敌No.1!");
}
例:通过for语句输入三次“我是无敌No.1”(条件递减)
for (int i = 30;i >= 10; i-=10 ){
System.out.println("我是无敌No.1!");
}
注:循环条件不一定为递增,也可以为递减(主要上面两个例的对比)
练习1:用for语句求和:
int sum = 0;
for (int i = 1; i <=100 ; i++) {
sum += i;
}
System.out.println("1-100的相加为:"+sum);
练习2:运用for语句对1-100之间的奇数求和
int sum1 = 0;
for (int i = 0; i <100 ; i++) {
if (i % 2 == 1){
sum1 += i;
}
}
System.out.println("1-100的奇数和为:"+sum1);
练习3:运用for语句对1-100之间的奇数求和(简易算法,相比练习2,更能减轻程序负担,一个优秀的程序员一定要时刻考虑程序负担)
int sum2 = 0;
for (int i = 1; i <100 ; i+=2) {
sum2 += i;
}
System.out.println("1-100的奇数和为:"+sum2);
执行逻辑为:先判断再执行,表达结构如下
while(循环条件){
需要重复的代码;
迭代条件;
}
例: 使用while语句输入三次“天才”
int i = 0;
while(i < 3 ){
System.out.println("tian cai ");
i++;
}
和for语句一样,for语句能做的,while语句都能做,功能上与for语句没有任何不同。这里不再做其他例子说明。
虽然for语句和while语句本质上没有任何不同,但根据语法结构,while语句更适用于不知道循环次数的场合,下面拿一个“珠穆朗玛峰”的案例进行说明
实验:已知珠穆朗玛峰高度为8848860,一张纸的厚度为0.1,在纸张足够大的前提下,纸张折叠多少次可以高于珠穆朗玛峰?
运算逻辑为:当纸张厚度不如珠穆朗玛峰时,纸张厚度*2,对折次数加1
使用while语句运算:
double zhumu = 8848860;//珠穆朗玛峰高度
double zhi = 0.1;//纸张厚度
double count = 0;//纸张对折次数
while (zhi < zhumu){//当纸张厚度不如珠穆朗玛峰时
zhi *= 2;//纸张厚度*2
count++;//对折次数加1
}
System.out.println(count);//输出纸张厚度
使用for语句运算:
double zhumu = 8848860;//珠穆朗玛峰高度
double zhi = 0.1;//纸张厚度
double count = 0;//对折次数
for( ;zhi <= zhumu ; ){ //若纸张厚度不如珠穆朗玛峰
count++;//对着次数+1
zhi *= 2;//纸张厚度*2
}
System.out.println(count);//输出纸张折叠次数
通过实验对比发现,for语句下实验虽然成功了,但初始量和迭代条件都是空白的,不符合人类逻辑。而while语句简单明了,更符合人类逻辑 。
所以虽然for语句和while语句功能一样,但根据语法结构,while语句更适用于不知道循环次数的场合;for语句更适用于知道循环次数的场合。
执行逻辑为:先执行再判断,表达结构如下
do{
循环语句;
迭代条件;
}while(循环条件)
例:输出三次ku
int x =0;
do {
System.out.println("ku");
x++;
}while (x < 3);
适用于抢票系统,(重点为先执行语句,再判断是否满足条件)
例:抢一张票,判断有票后停止
int x =0;
do {
System.out.println("抢到票了");
x++;
}while (x < 1);
问:为什么不用for语句或while语句?
答:最开始肯定没有票,不需要先判断有没有票
无休止的循环,表示形式如下:
1,运用for语句表示:
for (;;){
System.out.println("我是死循环");
}
2,运用while语句表示:
while (true){
System.out.println("我是死循环");
}
3,运用do-while语句表示:
do {
System.out.println("我是死循环");
}while (true);
注:由于死循环是不知道次数的循环,所以适合用while语句表示
一般配合其他条件辅助使用
循环语句叠加其他循环语句,可实现多重循环效果
练习1:每天说三次我爱你,持续一周
for(int i = 1;i <= 7 ;i++){
for (int j = 1; j <=3; j++) {
System.out.println("我爱你"+i);
}
System.out.println("----------------------");
}
练习2:输出每行每列四颗⭐
for (int i = 1; i <=4; i++) { //列
for (int j = 1; j <=4 ; j++) {//行
System.out.print("⭐");
}
System.out.println();
break和continue都是循环语句中的终止语句(仅在循环内有效,在循环外使用会报错)。break语句为终止循环内的代码,而continue为中止循环内的代码
1,break语句用于终止代码
例:说五遍我爱你,在第三遍停止
for (int i = 1; i <=5 ; i++) {
System.out.println("我爱你"+i);
if (i == 3)
break;
}
代码会在第三遍后停止
2,continue语句用于终止此行代码
例:说五遍我爱你,在第三遍停止,第四遍第五遍继续
for (int i = 1; i <=5 ; i++) {
if (i == 3)
continue;
System.out.println("我爱你"+i);
}
代码会绕过第三次
对比效果如下:
到此,循环结构总结结束
---------------------------------------------------------------------------------------------------------------------------------
分支结构可以看这里
java程序流程控制——分支结构下if语句和switch语句的比较及使用
想巩固下分支结构和循环结构的用法可以看这里
Scanner(文本扫描器)和Random(随机数生成器)的说明及使用,运用分支结构和循环结构编写猜数字游戏
最后
如果您看到了这篇文章,同时您也在学习java,希望您阅读这篇文章,希望与您一起讨论
基于黑马程序员的java学习笔记(持续更新)