控制语句 - 循环结构
while语句
-
- while循环结构:当类循环,先判断后执行,当符合条件则执行循环,如果不符合条件则跳出循环。循环语句中应有使循环趋向于结束的语句,否则会出现无限循环–––"死"循环。
// while格式 while(布尔表达式){ //当满足条件执行循环 循环语句; } // 求 1+2+3+4+5...+100 的和,使用暴力算法累加计算 public class test { public static void main(String[] args) { int a = 1; //开始的值 int sum = 0; //sum变量代表和 while(a<=100) { //判断a<=100是否为true,符合执行循环 sum = sum+a; //计算和,第一次sum=0+1; 第二次sum=1+2; 第三次sum=3+3.....加到100后求最终和 a++; //a自增1,用来计数 } System.out.println(sum); } } // 解读循环步骤 //第一次循环 while(a<=100) { //此时a=1,符合条件继续循环 sum = sum+a; //此时sum=0 加上 a=1 a++; } // 第二次循环 while(a<=100) { //此时a=2,符合条件继续循环 sum = sum+a; //此时sum=1 加上 a=2 a++; //此时a=2然后自增为3 } //第三次循环 while(a<=100) { //此时a=3,符合条件继续循环 sum = sum+a; //此时sum=3 加上 a=3 a++; //此时a=3然后自增为4 } //第四次循环 while(a<=100) { //此时a=4,符合条件继续循环 sum = sum+a; //此时sum=6 加上 a=4 a++; //此时a=4然后自增为5 }
- do-while循环结构:当类循环,先执行后判断,先执行一次循环,当符合条件则继续执行循环,如果不符合条件则跳出循环。
// do-while格式格式 do{ //先执行一次循环 循环语句; }while(布尔表达式); //再判断,符合条件则继续循环,否则跳出循环 // 求 1+2+3+4+5...+100 的和,使用暴力算法累加计算 public class test { public static void main(String[] args) { int a = 1; //开始的值 int sum = 0; //sum变量代表和 do { //先执行一次 sum += a; //sum = sum+a a++; } while (a<=100); //再判断 System.out.println(sum); } }
- while循环结构:当类循环,先判断后执行,当符合条件则执行循环,如果不符合条件则跳出循环。循环语句中应有使循环趋向于结束的语句,否则会出现无限循环–––"死"循环。
for语句
-
- for循环结构:for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。for循环在第一次反复之前要进行初始化,即执行初始表达式;随后,对布尔表达式进行判定,若判定结果为true,则执行循环,否则终止循环;最后在每一次反复的时候,进行某种形式的“步进”,即执行迭代因子。
// for循环格式 for (初始化表达式,初始化表达式2; 布尔表达式; 迭代因子,迭代因子2){ 循环语句; } // 求 1+2+3+4+5...+100 的和,使用暴力算法累加计算 public class test { public static void main(String[] args) { int sum = 0; //sum变量代表和 // 先执行初始化表达式int a=1;执行后进行判断a<=100;判断后进行循环;循环后迭代因子自增计数 for(int a=1; a<=100; a++) { sum += a; //计算和 } System.out.println(a); // 报错,for循环中的变量,只能在for循环中使用 System.out.println(sum); } }
- for循环结构:for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。for循环在第一次反复之前要进行初始化,即执行初始表达式;随后,对布尔表达式进行判定,若判定结果为true,则执行循环,否则终止循环;最后在每一次反复的时候,进行某种形式的“步进”,即执行迭代因子。
嵌套循环
-
- while、do-while、for嵌套循环:在一个循环语句内部再嵌套一个或多个循环,称为嵌套循环。while、do-while与for循环可以任意嵌套多层。
// 输出99乘法表 public class test { public static void main(String[] args) { for(int a=1; a<=9; a++) { for(int b=1; b<=a; b++) { System.out.print(b + "*" + a + "=" + b*a + "\t"); } System.out.println(); } } } // 解读循环步骤 // 第一层for,第一次循环 for(int a=1; a<=9; a++) { //a=1,a<=9符合条件,进行循环 // 第二层for,第一次循环 for(int b=1; b<=a; b++) { //b=1,(b=1)<=(a=1)符合条件,进行循环 System.out.print(b + "*" + a + "=" + b*a + "\t"); //输出1*1=1+\t制表符 } //b自增 // 第二层for,第二次循环 for(int b=1; b<=a; b++) { //b=2,(b=2)<=(a=1)不符合条件,跳出循环 System.out.print(b + "*" + a + "=" + b*a + "\t"); //不执行 } //跳出循环,b=1 System.out.println(); //输出空行 } // 第一层for,第二次循环 for(int a=1; a<=9; a++) { //a=2,a<=9符合条件,进行循环 // 第二层for,第一次循环 for(int b=1; b<=a; b++) { //b=1,(b=1)<=(a=2)符合条件,进行循环 System.out.print(b + "*" + a + "=" + b*a + "\t"); //输出1*2=2+\t制表符 } //b自增 // 第二层for,第二次循环 for(int b=1; b<=a; b++) { //b=2,(b=2)<=(a=2)符合条件,进行循环 System.out.print(b + "*" + a + "=" + b*a + "\t"); //输出2*2=4+\t制表符 } //b自增 // 第二层for,第三次循环 for(int b=1; b<=a; b++) { //b=3,(b=3)<=(a=2)不符合条件,跳出循环 System.out.print(b + "*" + a + "=" + b*a + "\t"); //不执行 } //跳出循环,b=1 System.out.println(); //输出空行 }
- while、do-while、for嵌套循环:在一个循环语句内部再嵌套一个或多个循环,称为嵌套循环。while、do-while与for循环可以任意嵌套多层。
break和continue语句
-
- break语句:在任何循环语句的主体部分,均可用break控制循环的流程,break用于强行退出循环,不执行循环中剩余的语句。
- continue语句:continue用在while,do-while中,continue 语句立刻跳到循环首部,越过了当前循环的其余部分;在for循环中,跳到for循环的迭代因子部分。
public class test { public static void main(String[] args) { int count = 0; //定义计数器 for (int i = 100; i < 150; i++) { // 如果是3的倍数,则跳过本次循环,继续进行下一次循环 if (i % 3 == 0){ continue; //跳过本次循环,继续进行下一次循环 } // 否则(不是3的倍数),输出该数 System.out.print(i + "\t"); count++; //没输出一个数,计数器加1 // 根据计数器判断每行是否已经输出了10个数 if (count % 10 == 0) { break; //输出达到10个数结束循环 } } } }
- 带标签的break语句:类似goto,强行退出循环,不执行循环中剩余的语句。
- 带标签的continue语句:类似goto,跳过本次循环,跳到指定标签位置。
public class test { public static void main(String args[]) { // 打印101-150之间所有的质数 outer: for (int i = 101; i < 150; i++) { for (int j = 2; j < i / 2; j++) { if (i % j == 0){ continue outer; //跳过本次循环,跳到outer标签位置 } } System.out.print(i + " "); } } }