while循环
-
While是最基本的循环结构,语法为:
while(布尔表达式){ //循环语句块 }
public class LoopWhile01 { public static void main(String[] args) { //使用while循环输出1~100 int x=0; while (x<100){ x++; System.out.println(x); } } }
-
只要布尔表达式为true,循环则会一直执行下去,所以要避免条件一直为true,影响程序性能或者程序卡死
-
大多数情况是需要将循环停下来,所以需要一个让表达式失效的方式来结束循环
public class LoopWhile02 { public static void main(String[] args) { //输出1+2+3+...+100的值 int x=0; int y=0; while (x<=100){ y=y+x; x++; } System.out.println(y); } }
do while循环
-
对于while而言,如果布尔表达式为false,则不进入循环,但是有时候需要即使布尔表达式为false时也执行一次
-
while和do…while的区别
- while先判断,再执行循环;do…while先执行一次,再判断
- do…while总是保证循环体被至少执行一次
-
语法:
do{ //语句块,执行一次后再循环 }while(布尔表达式);
public class LoopWhile03 { public static void main(String[] args) { //输出1+2+3+...+100 int x=0; int y=0; do{ y+=x; x++; } while (x<=100); System.out.println(y); } }
public class LoopWhile04 { public static void main(String[] args) { //while和do...while的区别 Integer x=1; while (x<1){ x++; System.out.println(x); } System.out.println("============="); do { x++; }while (x<1); System.out.println(x); } }
for循环
-
for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构
-
for循环的次数在执行前就被确定,语法为:
for(初始化;布尔表达式;更新){ //语句块 }
public class LoopWhile05 {
public static void main(String[] args) {
//计算1-100所有奇数和偶数的和
Integer oddSum=0;//奇数项
Integer evenSum=0;//偶数项
for (int i=0;i<=100;i++){
if(i%2!=0){ //求余,奇数
oddSum+=i;//oddSum=oddSum+i;
}else {
evenSum+=i;
}
}
System.out.println("奇数和为:"+oddSum);
System.out.println("偶数和为:"+evenSum);
}
}
public class LoopFor02 {
public static void main(String[] args) {
//输出1000以内能被5整除的数,每行输出3个数
for (int i=1;i<=1000;i++){
if(i%5==0){ //被5整除的数
System.out.print(i+"\t");//print输出后不换行,println输出后要换行
}
if (i%(5*3)==0) { //被15整除的数
System.out.println();//println输出后要换行
}
}
}
}
public class LoopFor03 {
public static void main(String[] args) {
//打印9*9乘法表
for (int j=1;j<=9;j++){ //外层循环,9列
for(int i=1;i<=j;i++){ //一列,i<=j为删除重复项
System.out.print(i+"*"+j+"="+j*i+"\t");
}
System.out.println();
}
}
}
增强for循环
-
Java5中引入了哦用于数组或集合的增强for循环,语法为:
for(声明语句:表达式){ //语句块 }
- 声明语句:声明新的局部变量,变量的类型和数组元素的类型匹配,作用域限定的循环语句块,值与此时数组元素的值相等
- 表达式:要访问的数组名,或者是返回值为数组的方法
public class LoopFor04 {
public static void main(String[] args) {
int[] num={1,2,3,4,5};
for(int i=0;i<5;i++){
System.out.print(num[i]+"\t");
}
System.out.println("==============");
//增强for循环,类型也是int型,声明变量num2,表达式为数组num
for (int num2:num){
System.out.print(num2+"\t");
}
}
}
break、continue
-
break可以用于任何循环语句的主体部分控制循环的流程
-
break用于强行退出循环,不执行循环中剩余的语句
public class LoopBreak01 { public static void main(String[] args) { int i=0; while (i<100){ i++; System.out.println(i); if (i==20){ break;//当i等于20时直接跳出循环 } } System.out.println("执行完毕"); } }
-
continue语句用在循环语句中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定
public class LoopBreak02 {
public static void main(String[] args) {
int i=0;
while (i<100){
i++;
if (i%10==0){
System.out.println();//i为10的倍数时用一个空格替代
continue;//继续执行下一次循环
}
System.out.println(i);
}
}
}
练习
-
打印一个三角形
public class LoopBreak03 { public static void main(String[] args) { //打印一个5行的三角形 for (int i=1;i<=5;i++){ for(int j=5;j>=i;j--){ System.out.print(" "); //第一次循环,打印出一个空格直角三角 } for (int j = 1; j <=i; j++) { System.out.print("$"); //第二次循环,打印出一个$直角三角 } for (int j = 1; j < i; j++) { System.out.print("$");//第三次循环,打印出一个$直角三角 } System.out.println(); } } }