3.3 for语句(常用)
格式:
for(初始化;循环条件;迭代条件;){ 循环体; }
执行过程:初始化,循环条件,循环体,迭代条件,循环条件,循环体,迭代条件,循环条件…
简单编写
public class Test1 { public static void main(String[] args) { //for循环(初始化,循环条件,迭代条件,循环体) for(int i = 1;i < 4;i++){ System.out.println("欢迎光临,我的第" + i + "位客人!"); } } }
题目一
输出100以内的所以偶数及所有偶数的和
方法一:
public class Test2 { public static void main(String[] args) { int sum = 0; for(int i = 0;i <= 100;i += 2){ sum += i; System.out.println(i); } System.out.println(sum); } }
方法二:
public class Test1 { public static void main(String[] args) { int sum = 0; for(int i = 0;i <= 100;i++){ if(i % 2 == 0){ sum += i; System.out.println(i); } } System.out.println(sum); } }
题目二
public class Test1 { public static void main(String[] args) { int sum = 0; for(int i = 0;i <= 150;i++){ System.out.print(i); if(i % 3 == 0){ System.out.print("foo"); } if(i % 5 == 0){ System.out.print("biz"); } if(i % 7 == 0){ System.out.print("baz"); } System.out.println(); } } }
题目三:水仙花树
public class Test1 { public static void main(String[] args) { int sum = 0; for(int i = 100;i < 1000;i++){ int a = i/100; int b = (i/10)%10; int c = i%10; if(a * a * a + b * b * b + c * c * c == i){ System.out.println(i); } } } }
题目四
方法一
for循环
import java.util.Scanner; public class Test{ public static void main(String[] args) { Scanner s = new Scanner(System.in); int a = 0; //正数个数 int b = 0; //负数个数 int c = 0; //总数个数 for(;;c++){ System.out.println("请输入数字"); int j = s.nextInt(); if(j > 0){ a += 1; }else if(j < 0){ b += 1; }else{ break; } } System.out.println("总共输入个数:" + c + "正数个数为: " + a + "负数个数为:" + b ); } }
方法二
while循环
import java.util.Scanner; public class Test{ public static void main(String[] args) { Scanner s = new Scanner(System.in); int a = 0; //正数个数 int b = 0; //负数个数 int c = 0; //总数个数 while(true){ System.out.println("请输入数字"); int j = s.nextInt(); if(j > 0){ a += 1; c++; }else if(j < 0){ b += 1; c++; }else{ break; } } System.out.println("总共输入个数:" + c + "正数个数为: " + a + "负数个数为:" + b ); } }
方法三
import java.util.Scanner; public class Test{ public static void main(String[] args) { Scanner s = new Scanner(System.in); int a = 0; //正数个数 int b = 0; //负数个数 int c = 0; //总数个数 for(int i = 1;i != 0;c++){ System.out.println("请输入数字"); int j = s.nextInt(); if(j > 0){ a += 1; }else if(j < 0){ b += 1; }else{ i = 0; } } System.out.println("总共输入个数" + c + "正数个数为: " + a + "负数个数为:" + b + "零个数为:1"); } }
嵌套循环
一:打印边长为5*的正方形(特殊的长方形)
public class Test{ public static void main(String[] args) { for(int i = 1;i < 6;i++){//外层控制行数 for(int j = 1;j < 6;j++){//内层控制列数 System.out.print("*"); } System.out.println(); } } }
二:打印金字塔型
public class Test{ public static void main(String[] args) { for(int i = 0;i < 6;i++){ for(int j = 0;j < 6 - i;j++){ System.out.print(" "); } for(int k = 0; k < (i + 1) * 2 - 1;k++){ System.out.print("*"); } System.out.println(); } } }
题目一:九九乘法表
public class Test{ public static void main(String[] args) { for(int i = 1;i < 10;i++){ for(int j = 1;j <= i;j++){ System.out.print(i + "*" + j + "=" + i*j + "\t"); } System.out.println(); } } }
题目二:1~100之间的质数
方法一
public class Test{ public static void main(String[] args) { boolean flag = false; for(int i = 2;i <= 100;i++){ for(int j = 2;j < i;j++){ if(i % j == 0){ flag = true; } } if(flag == false){ System.out.println(i); } flag = false; } } }
方法二(优化)
public class Test{ public static void main(String[] args) { boolean flag = false; long start = System.currentTimeMillis();//获取当前系统毫秒数 for(int i = 2;i <= 1000;i++){ for(int j = 2;j <= Math.sqrt(i);j++){//优化一:取根号即可确定根号i平方 == i if(i % j == 0){ flag = true; break; //优化二:满足条件就退出循环 } } if(flag == false){ System.out.println(i); } flag = false; } long end = System.currentTimeMillis(); System.out.println("总花费时间:" + (end-start)); } }
- break:结束"当前"循环;continue:结束"当次"循环
- break语句与continue语句之后不能添加其他语句
注:JDK1.5提供方便遍历集合,数组元素的foreach循环
4.练习题
感谢大家的支持,关注,评论,点赞!
参考资料:
89