Java基础
循环语句
1.for循环
- 语法:
for(初始化语句;条件判断语句;条件控制语句){
循环体语句;
}
- 执行流程
- 先执行初始化语句
- 然后执行条件判断语句
- 如果满足条件,则执行循环体语句
- 循环体语句执行完后,执行条件控制语句
根据上述标号:1234234234…这样循环下去 直到条件判断为false结束循环
注意:初始化语句只执行一次
例如
public static void main(String[] args) {
for (int i = 1; i <=3 ; i++) {//先执行初始化语句 i=1; 然后判断i是否小于等于三 满足 则输出i的值
//然后执行条件控制语句i++;此时i的值变成2 然后再判断再执行 直到不满足条件 结束循环为止
System.out.println(i);//依次输出1 2 3
}
}
案例:打印55到80
public static void main(String[] args) {
for (int i = 55; i <=80 ; i++) {
System.out.println(i);
}
}
注意:循环中定义的变量,只在循环中起作用,循环结束,就从内存中消失了
2.while循环
- 语法
初始化语句;
while(条件判断语句) {
循环体语句;
条件控制语句;
}
- 执行流程
- 先执行初始化语句
- 然后判断条件
- 满足条件后执行循环体语句
- 然后执行条件控制语句
按照标号:1234234234
注意:初始化语句只执行一次
例如
public static void main(String[] args) {
int i=1;
while (i<=3){
System.out.println(i);//依次输出1 2 3
i++;
}
}
3.do…while();
- 语法:
do{
循环体语句;
}while(条件判断语句);
- 执行流程
- 先进do执行循环体语句
- 再进while判断条件
- 满足的话进do再执行,直到条件不满足,结束循环
例如
public static void main(String[] args) {
int i=1;
do {
System.out.println(i);//依次输出 1 2 3
i++;
}while (i<=3);
}
注意
- do…while循环不论条件满不满足 至少会执行一次;因为他从do开始,循环体会先执行(所以至少执行一次)
- 一般do…while循环很少用
4.死循环
- 顾名思义,就是让循环停不下来,一直循环。
当条件判断一直为true时,该循环就成为了死循环
例如
while类型
while(true){
//这就是典型的while死循环
}
//这个循环也是死循环
int i = 0;
while(i<10){
i--;
}
for 类型
for(;;){
//典型的for死循环格式 里面不写条件 初始化语句那些 他就会变成死循环
}
//或者条件永远为true
for(int i = 0; i < 10; i--){
//这个循环 i永远小于10 所以他就构成了死循环
}
do…while类型
do{
//这是do....while死循环的经典格式
}while(true);
跳出死循环需要用break关键字
- break关键字 只能用于循环 还有switch语句里 用来结束循环或者switch语句
例如
int i = 0;
while(true){
i++;
if(i==1000){
break;//当i加到1000时 会执行break关键字 就会结束这个循环
}
}
与break对应的有一个continue关键字
- continue是继续的意思,当循环时遇到continue关键字 ,则此次循环直接跳过,执行下一次循环
例如
for(int i = 1; i <= 3; i++){
if(i==2){
continue; //当i==2时进入if语句执行continue 直接跳出此次循环 不输出2了 直接进行下一次循环了 所以没有输出2
}
System.out.println(i);//依次输出1 3
}
案例
- 求1-5之间的数据和
- 求1-10之间偶数和
- 求水仙花数 水仙花数是一个三位数 水仙花数的个位、十位、百位的数字立方和等于原数
- 统计1到100之间奇数的个数
- 每行打印两个水仙花数
- 世界高山峰是珠穆朗玛峰(8844.43米=8844430毫米), 假如我有一张足够大的纸,它的厚度是0.1毫米。 请问, 我折叠多少次,可以折成珠穆朗玛峰的高度? (while循环做)
可以思考着做一做(答案在下面)
求1-5之间的数据和
public class Demo {
public static void main(String[] args) {
int sum=0;//定义一个求和变量 赋值0 不影响加法运算
for(int i = 1; i <= 5; i++){
sum+=i;//sum=sum+i;
}
System.out.println(sum);//15
}
}
求1-10之间偶数和
public class Demo {
public static void main(String[] args) {
int sum=0;//定义一个求和变量 赋值0 不影响加法运算
for(int i = 1; i <= 10; i++){
if (i%2==0){//判断i是否为偶数
sum+=i;//sum=sum+i;
}
}
System.out.println(sum);//30
}
}
求水仙花数 水仙花数是一个三位数 水仙花数的个位、十位、百位的数字立方和等于原数
public class Demo {
public static void main(String[] args) {
for(int i = 100; i <= 999; i++){//因为是一个三位数 从最小的三位数100开始 到最大的三位数999结束
int ge=i%10;//取三位数的个位
int shi=i/10%10;//取十位
int bai=i/100%10;//取百位
if (ge*ge*ge+shi*shi*shi+bai*bai*bai==i){//满足条件的才是水仙花数
System.out.println(i);// 153 370 371 407
}
}
}
}
统计1到100之间奇数的个数
public class Demo {
public static void main(String[] args) {
int count=0;//定义一个变量用来计数
for(int i = 1; i <= 100; i++){
if(i%2!=0){//当对二取余余数不为零时则为奇数
count++;
}
}
System.out.println(count);//50
}
}
每行打印两个水仙花数
public class Demo {
public static void main(String[] args) {
int count=0;//定义一个变量用来计数
for(int i = 100; i <= 999; i++){//因为是一个三位数 从最小的三位数100开始 到最大的三位数999结束
int ge=i%10;//取三位数的个位
int shi=i/10%10;//取十位
int bai=i/100%10;//取百位
if (ge*ge*ge+shi*shi*shi+bai*bai*bai==i){//满足条件的才是水仙花数
System.out.print(i+" ");// 去掉ln就不换行输出了
count++;
if (count%2==0){//当他为2的倍数时就输出一个换行
System.out.println();//输出一个换行
}
}
}
}
}
世界高山峰是珠穆朗玛峰(8844.43米=8844430毫米), 假如我有一张足够大的纸,它的厚度是0.1毫米。 请问, 我折叠多少次,可以折成珠穆朗玛峰的高度? (while循环做)
public class Demo {
public static void main(String[] args) {
double a=0.1;//定义一个变量用来代替纸张的厚度
int count=0;//定义一个变量用来计数
while (a<=8844430){//当a小于此高度时就折叠
a*=2;//a=a*2
count++;
}
System.out.println(count);//27次
}
}