1、循环语句就是让计算机依据条件做循环计算,在条件满足时继续循环,条件不满足时,退出循环。
while条件循环就是一种循环方式。
格式: while(条件){ //循环语句 }
1 public class Main { 2 public static void main(String[] args) { 3 int sum = 0; // 累加的和,初始化为0 4 int n = 1; 5 while (n <= 100) { // 循环条件是n <= 100 6 sum += n; // 把n累加到sum中 7 n ++; // n自身加1 8 } 9 System.out.println(sum); // 5050 10 } 11 }
要避免死循环,若while循环是个死循环,java的int类型有最大值,达到最大值后,再加就会变成负数,结果可能会意外退出while循环。
2、练习:使用while循环计算从m到n的和
1 public class Main { 2 public static void main(String[] args) { 3 int sum=0; 4 int m=20; 5 int n=100; 6 while(m<=n) { 7 sum+=m; 8 m++; 9 } 10 System.out.println("m到n的和为:"+sum); 11 } 12 }
3、do while循环
while循环先判断循环条件,再执行循环,而do while循环则是先执行循环,在判断条件,条件满足就继续循环,不满足就退出循环。
格式:do{
//循环语句
}while(条件表达式);
1 public class Main { 2 public static void main(String[] args) { 3 int sum = 0; 4 int n = 1; 5 do { 6 sum = sum + n; 7 n ++; 8 } while (n <= 100); 9 System.out.println(sum); 10 } 11 }
1 //计算从m到n的和 2 public class Main { 3 public static void main(String[] args) { 4 int sum = 0; 5 int m = 20; 6 int n = 100; 7 // 使用do while计算M+...+N: 8 do { 9 sum+=m; 10 m++; 11 }while(m<=n); 12 System.out.println(sum); 13 } 14 }
4、for循环:使用计数器实现循环。for循环会先初始化计数器,,然后再每次循环前检测循环条件,在每次循环后更新计数器,计数器变量通常命名为i.
格式:for(初始条件;循环检测条件;循环后更新计数器){ //执行语句; }
public class Main { public static void main(String[] args) { int sum = 0; for (int i=1; i<=100; i++) { sum = sum + i; } System.out.println(sum); } }
1 //对一个整型数组的所有元素求和 2 public class Main { 3 public static void main(String[] args) { 4 int[] ns = { 1, 4, 9, 16, 25 }; 5 int sum = 0; 6 for (int i=0; i<ns.length; i++) { 7 System.out.println("i = " + i + ", ns[i] = " + ns[i]); 8 sum = sum + ns[i]; 9 } 10 System.out.println("sum = " + sum); 11 } 12 }
5、for each循环:遍历数组时,可以访问每个元素的值。相比for循环,for each循环的变量n不再是计数器,而是直接对应到数组的每个元素。但是这个循环无法指定遍历顺序,也无法获取数组的索引。
除了数组外,for each循环能遍历所有“可迭代”的数据类型,包括后面介绍的List、Map等。
格式:for(type 元素:数组名){ //循环语句 }
1 public class Main { 2 public static void main(String[] args) { 3 int[] ns = { 1, 4, 9, 16, 25 }; 4 for (int n : ns) { 5 System.out.println(n); 6 } 7 } 8 }
6、练习
1 //给定一个数组,用for循环倒序输出每一个元素 2 public class Main { 3 public static void main(String[] args) { 4 int[] nums= {1,5,6,7,8,9,3}; 5 for(int i=nums.length-1;i>=0;i--) { 6 System.out.print(nums[i]+" "); 7 } 8 } 9 }
// 利用 for each循环对数组每个元素求和 public class Main { public static void main(String[] args) { int[] ns = { 1, 4, 9, 16, 25 }; int sum = 0; for(int i:nums) { sum+=i; //i++; } System.out.println(sum); // 55 } }
6、break和continue
* break是跳出当前循环;
* continue是提前结束本次循环,直接进入下一循环
1 public class Main { 2 public static void main(String[] args) { 3 int sum = 0; 4 for (int i=1; i<=10; i++) { 5 System.out.println("begin i = " + i); 6 if (i % 2 == 0) { 7 continue; // continue语句会结束本次循环 8 } 9 sum = sum + i; 10 System.out.println("end i = " + i); 11 } 12 System.out.println(sum); // 25 13 } 14 }