Day08——循环结构
顺序结构的程序语句只能被执行一次。如果想要同样的操作执行多次,,就需要使用循环结构。
Java中的三种主要循环结构:
- while循环
- do...while循环
- for循环
在Java5中引入了一种主要用于 数组 的增强型for循环。
while循环
while是最基本的循环。while语句格式:
while( 布尔表达式 ){
//循环内容
}
当布尔表达式为true时,while内的循环内容会被执行,直到布尔表达式判断为false停止。
少部分情况需要循环一直执行,比如服务器的请求响应监听等。
循环条件一直为true就会造成无限循环【死循环】,我们正常的业务编程中应该尽量避免死循环。死循环会影响程序性能或者造成程序卡死奔溃!
例1:求1+2+3+ ... +100= ?
public static void main(String[] args){
int i = 0;
int sum = 0
while(i<100){
i++;
sum = sum + i;
}
System.out.println("Sum = " + sum );
}//Sum = 5050
do...while循环
do...while语句格式:
do{
//循环内容
}while(布尔表达式);
当布尔表达式为false时,while语句不会执行循环内容,但do...while语句会执行一次循环内容,即先执行一次,后判断布尔表达式。
例2:
//例1代码段4~7改为如下
do{
i++;
sum = sum + i;
}while(i<100); //5050
for循环
for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。
for循环格式:
for(初始化; 布尔表达式 ; 迭代){
//循环内容
}
【扩展】缩写:100.for = for (int i = 0; i < 100; i++) {}
例3:
for (int i = 0; i <= 100; i++) {
sum = sum + i;
}
上端代码可以看出,for循环把while和do...while中,i 的初始化、i 迭代的语句放在了一起,因此能使循环结构变得更加简单。
例4:输出1-1000之间能被5整除的数,并且每行输出3个。
int j = 0;
for (int i = 0; i <= 1000; i++) {
if(i%5==0){
j++;//判断输出了几个数
if(j%3==0){
System.out.println(i);//println打印出i并且换行
}else{
System.out.print(i+"\t");//print不换行,\t为转义字符tab,用于分隔两相邻数据
}
}
}
例5:打印九九乘法表
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(i+"*"+j+"="+i*j+"\t");
}
System.out.println();
}
/*
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
*/
-
增强for循环
Java5 引入了一种主要用于数组 或 集合的增强型 for 循环。
int[] numbers={10,20,30,40,50};//创建一个数组numbers,并赋值
for(int x:numbers){ //遍历数组中的元素,赋值给x
System.out.println(x);
}//10 20 30 40 50
详情见数组章节。
break & continue
1、break关键字
break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。
在双循环嵌套语句中,跳出里层循环。
2、continue关键字
continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代,即,结束本次循环,并进行下一次判断布尔表达式循环。
break & continue两者区别:
- break用于强行退出循环,不执行循环中剩余的语句。
- continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行 下一次是否执行循环的判定。
【扩展】打印三角形
public static void main(String[] args) {
for (int i = 1; i <= 5; i++) { //i控制行数,i=1即第一行
for (int j = (9-(2*i-1))/2 ; j >= 0 ; j--) {
System.out.print(" "); //j控制空格数,即此行需要多少个空格
}
for (int k=2*i-1; k > 0 ; k--) {
System.out.print("*"); //k控制*数,即此行需要多少个*
}
System.out.println(); //换行
}
}/*
*
***
*****
*******
*********
*/