01、循环概述及for循环的简单使用
针对这种重复的动作问题,java就提供了一种语句:循环语句。
一、循环语句
循环体:要做的事情
初始化条件:从哪里开始。
判断条件:在什么情况下结束。
控制条件:控制台初始化条件的变化
注意:
初始化条件一般定义一个变量。
判断条件一般是一个关系表达式。
循环体就是要做什么。
控制条件就是控制变量的变化。
二、Java提供了三种循环:
for
while
do…while
for : 格式
for( 初始化表达式 ; 判断条件 ; 控制条件){
执行语句;
}
执行流程:
A:先执行初始化表达式。
B:执行判断条件。
C:根据判断条件的返回值
如果true,执行循环体
如果false,for循环结束
D:执行控制条件,接着返回B。
02、用循环实现求1-10之和
思路:
A:首先要获得到1-10之间的每一个数据。用for循环可以实现。
B:因为最终要一个和的结果。这个和在每一次循环的时候是变化的,所以要定义一个变量保存。在哪里定义这个变量呢 ?
1.在for循环里面定义,行不行?
a、如果在循环体上定义,肯定不行,这样的话每次循环都会重新定义一个变量。
b、如果在循环初始化条件表达式上定义,可以但在循环外边这个变量又不能被访问到。
2.通过考虑,放到外面定义。
public class SumFrom1To10 {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += i;
}
System.out.println("1 到 10 的和为:" + sum);
}
}
03、定义变量的问题
什么时候定义变量 ?
当你知道这是一个变化的内容的时候。
一般定义的范围:
首先是在小范围内,如果不合理,在考虑大范围,
两种情况
A:先在小范围内定义变量,然后在大范围内定义变量。可以因为小范围的代码执行完后,小范围内定义的变量会在内存中被释放掉。
B:先在大范围内定义变量,然后在小范围内定义变量。不可以,因为变量没有被释放掉。
04、while循环的概述和基本使用
while循环格式:
while(条件表达式){
循环体;
}
改进版格式:
初始化条件;
while(判断条件){
循环体;
控制条件;
}
一、while循环和for循环是可以等价转换的。区别:
初始化条件的变量在for结束后,以后是不能使用的。而while结束后是可以使用的。
如果这个变量仅仅是控制次数的,建议使用for循环因为这样,for结束,这个变量就结束,效率高。
二、什么时候用for,什么时候用while ?
如果是控制范围,最好用for。
如果范围不明确,用while。
05、用while循环实现求1-100之和
A:先用for循环来做
public class SumFrom1To100ForLoop {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 100; i++) {
sum += i;
}
System.out.println("1 到 100 的和为:" + sum);
}
}
B:然后用while循环来做
public class SumFrom1To100WhileLoop {
public static void main(String[] args) {
int sum = 0;
int num = 1;
while (num <= 100) {
sum += num;
num++;
}
System.out.println("1 到 100 的和为:" + sum);
}
}
06、珠穆朗玛峰的问题
珠穆朗玛峰高8848米,有张足够大的纸,他的厚度是0.01米折多少次后,可以折成珠穆朗玛峰的高度?(答案:20次。)
思路:
A:知道初始化条件是厚度0.01米,也就是1cm。最终条件是8848米,也就是884800cm。循环体的内容是厚度每次变为以前的2倍,判断条件是厚度有没有超多最大值。
B:定义一个统计变量,用于记录次数每当判断条件成立,我就++。统计变量的初始化值为0.
C:因为我不知道多少次,所以用while循环来做。
public class PaperFolding {
public static void main(String[] args) {
double paperThickness = 0.01;
double everestHeight = 8848;
int foldCount = 0;
while (paperThickness < everestHeight) {
paperThickness *= 2;
foldCount++;
}
System.out.println("将纸折叠 " + foldCount + " 次后可以达到珠穆朗玛峰的高度。");
}
}
07、do..while循环的概述和基本使用
do..while循环的格式:
do{
循环体;
}while(判断条件);
do..while循环格式改进版:
初始化条件;
do{
循环体;
控制条件;
}while(判断条件);
08、输出水仙花数
求100-999之间的所有水仙花数
什么是水仙花数 ?
所谓的“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个水仙花数,因为:
153=1*1*1+ 5*5*5 + 3*3*3;
public class NarcissisticNumbers {
public static void main(String[] args) {
for (int i = 100; i < 1000; i++) {
int hundredsDigit = i / 100;
int tensDigit = (i / 10) % 10;
int onesDigit = i % 10;
int sumOfCubes = (int) (Math.pow(hundredsDigit, 3) + Math.pow(tensDigit, 3) + Math.pow(onesDigit, 3));
if (sumOfCubes == i) {
System.out.println(i);
}
}
}
}
09、循环的嵌套使用
在控制台输出以下内容:
****
****
****
输出语句:
System.out.print();//不换行
System.out.printIn0;//换行
总结:外循环控制行数,内循环控制列数。
10、九九乘法表
public class MultiplicationTable {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "×" + i + "=" + i * j + "\t");
}
System.out.println();
}
}
}
11、break和continue的使用
现在的循环都是从头干到尾,假如我想在输出一个数据后就立马结束,怎么办?
break和continue : 终止或者中端循环的操作。
break:结束当前循环;
continue:结束本次循环进入下一次循环。
注意:
break和continue是在循环中使用的,一般是在循环中的判断中使用;
break还可以用作switch语句的结束;
break和continue在一个完整的操作中,一般位于最后。
12、使用标号的方式结束多层循环
多层循环,怎么样才能实现,在内层循环中加一个break,从而实现结束整个循环?
针对这种需求,Java提供了一种方案,带标号的结束。
首先,定义一个标号,接着,使用break或者continue结束到次标号即可
格式:
名字 : for(){}....
在想要跳出的地方输入:break 名字; 就可以了。