1 while循环
案例:Demo1
1+2+3+4+5+...+100 = ?
首先定义一个变量sum,用来保存累加之和,int sum=0
第1次:sum = sum + 1
第2次: sum = sum + 2
第3次:sum = sum + 3
第4次:sum = sum + 4
...
第100次:sum = sum + 100
公式: sum = sum + i(i的取值范围1~100)
int i=1;
while(i<=100){
sum = sum + i;
i++;
}
案例:Demo1,求出1~100之间所有的整数累加之和
public class Demo1 { public static void main(String[] args) { //1 求出1~100之间的每一个整数 int i=1,sum=0; while(i<=100){ //2 累加求和的公式:sum = sum + i sum = sum + i; i++; } System.out.println("累加之和:"+sum); } } //Demo2:求出100~200之间所有整数累加之和 public class Demo2 { public static void main(String[] args) { int i=100,sum=0; while(i<=200){ sum=sum+i; i++; } System.out.println("累加之和:"+sum); } } public class Demo3 { //Demo3:求出100~500之间所有的奇数累加之和 public static void main(String[] args) { //1 100~500之间每一个整数 int i=100,sum=0; while(i<=500){ //2 过滤出其中所有的奇数 if(i%2!=0){//奇数 //3 累加求和:sum = sum + i sum = sum + i; } i++; } System.out.println(sum); } } //Demo4: 使用while循环,分别求出1~200之间所有的 //奇数累加之和,和所有的偶数累加之和 public class Demo4 { public static void main(String[] args) { //1 求出1~200之间的每一个整数 int i=1,sum1=0,sum2=0; //sum1保存奇数累加之和,sum2保存偶数累加之和 while(i<=200){ //2 分别过滤出其中的奇数和偶数 if(i%2!=0){//奇数 //3 累加之和:sum=sum+i sum1 = sum1+i; }else{//偶数 sum2 = sum2+i; } i++; } System.out.println("奇数累加之和:"+sum1); System.out.println("偶数累加之和:"+sum2); } }
2 do-while循环
1)格式:
do{
循环体语句
}while(表达式);
2)语法规则:首先执行循环体语句一次,然后判断表达式,如果表达式为true,再执行一次循环体语句,然后再来判断表达式,如果表达式还为true,继续再执行循环体语句一次...直到表达式为false,退出do-while循环。
3)do-while循环特点:不管循环条件(表达式)true还是false,循环体语句至少执行一次。
案例:Demo5
public class Demo5 { //do-while循环: //1 格式: do{ // 循环体语句 // }while(表达式); //2 语法规则:首先执行一次循环体语句,然后判断表达 //式,如果表达式为true,执行一次循环体语句,然后 //再来判断表达式,如果表达式还为true,继续再执行 //一次循环体语句...直到表达式为false,退出do-while //循环 //使用do-while打印10行天气很好 public static void main(String[] args) { int i=1; do{ System.out.println("天气很好"); i++; }while(i<=10); } } //Demo6:使用do-while循环,输出100~200之间的 //每一个整数 public class Demo6 { public static void main(String[] args) { int i=100; do{ System.out.println(i); i++; }while(i<=200); } } public class Demo7 { //使用do-while,求出1~200之间所有奇数和偶数,并 //输出 public static void main(String[] args) { int i=1; do{ if(i%2!=0){//奇数 System.out.println(i+"是奇数"); }else{//偶数 System.out.println(i+"是偶数"); } i++; }while(i<=200); } } public class Demo8 { //do-while的特点:不管循环的条件true还是false, //循环体语句至少执行一次。 public static void main(String[] args) { do{ System.out.println("至少执行一次!"); }while(false); } }
4)do-while死循环,循环的条件永远都为true,循环语句会被一直执行。
do{
循环体语句
}while(true);
案例:Demo9
public class Demo9 { public static void main(String[] args) { do{ System.out.println("天长地久有时尽," + "此恨绵绵无绝期。"); }while(1>0); } } public class Demo10 { //使用do-while,求出200~500之间的所有奇数(2种方法) public static void main(String[] args) { //方法1 int i=200; do{ if(i%2!=0){ System.out.println(i+"是奇数"); } i++; }while(i<=500); //方法2 //201,203,205...499 //定义控制循环次数的变量k,k的初值201,条件k<500, //增量k=k+2 System.out.println();//换行 System.out.println(); System.out.println(); int k=201; do{ System.out.println(k); k=k+2; }while(k<=500); } } public class Demo11 { //私用do-while循环,求出100~200之间所有整数累加 //之和 public static void main(String[] args) { int i=100,sum=0; do{ sum = sum + i; i++; }while(i<=200); System.out.println("累加之和:"+sum); } } public class Demo12 { //使用do-while,求出1~500之间所有偶数累加之和 //(2种方法) public static void main(String[] args) { //方法1 int i=1,sum=0; do{ if(i%2==0){//偶数 sum = sum + i; } i++; }while(i<=500); System.out.println("偶数累加之和:"+sum); //方法2 //2,4,6,8,10...500 //控制循环次数变量k的初值2,条件k<=500,增量 //k=k+2 int k=2,sum2=0; do{ sum2 = sum2 + k; k=k+2; }while(k<=500); System.out.println("偶数累加之和:"+sum2); } }
3 for循环
企业中使用最为广泛的循环语句
1)格式:
for(表达式1;表达式2;表达式3){
循环体语句
}
eg:
for(int i=1;i<=5;i++){
System.out.println("今天");
}
表达式1 表达式2 循环体语句 表达式3
第1次循环: i=1 i<=5(true) 今天 i++(i:2)
第2次循环: i<=5(true) 今天 i++(i:3)
第3次循环: i<=5(true) 今天 i++(i:4)
第4次循环: i<=5(true) 今天 i++(i:5)
第5次循环: i<=5(true) 今天 i++(i:6)
第6次循环: i<=5(false) 退出for循环
2)语法规则:
第1次循环:
表达式1-->表达式2-->循环体语句-->表达式3
从第2次循环开始:
表达式2-->循环体语句-->表达式3
只有当表达式2为false,退出for循环
案例:Demo13
public class Demo13 { //for循环: //1 格式:for(表达式1;表达式2;表达式3){ // 循环体语句 // } //2 语法规则: //第1次循环: //表达式1-->表达式2-->循环体语句-->表达式3 //从第2次循环开始: // 表达式2-->循环体语句-->表达式3 //只要表达式2为true,执行循环体语句,一旦表达式2 //为false,直接退出for循环。 //使用for输出10行****** public static void main(String[] args) { for(int i=1;i<=10;i++){ System.out.println("******"); } } } //Demo14:使用for循环,输出200~1000之间每一个 //整数 public class Demo14 { public static void main(String[] args) { for(int i=200;i<=1000;i++){ System.out.println(i); } } } //Demo15:使用for循环,求出1~200之间所有奇数和 //偶数并输出。 public class Demo15 { public static void main(String[] args) { for(int i=1;i<=200;i++){ if(i%2!=0){//奇数 System.out.println(i+"是奇数"); }else{//i%2==0 偶数 System.out.println(i+"是偶数"); } } } } //Demo16:使用for循环,求出公元1000~2017年之间 //闰年和非闰年 public class Demo16 { public static void main(String[] args) { for(int i=1000;i<=2017;i++){ if((i%4==0&&i%100!=0)||i%400==0){ System.out.println(i+"是闰年"); }else{ System.out.println(i+"不是闰年"); } } } } import java.util.Scanner; public class Demo17 { public static void main(String[] args) { //1 创建Scanner对象 Scanner sc = new Scanner(System.in); //2 定义变量year,接收输入的整数 System.out.println("请输入一个整数:"); int year = sc.nextInt(); //3 判断year是否大于等于1 if(year>=1){ //4 求出1~year之间所有的整数 for(int i=1;i<=year;i++){ //5 求出1~year之间闰年和非闰年 if((i%4==0&&i%100!=0)||i%400==0){ System.out.println(i+"是闰年"); }else{ System.out.println(i+"不是闰年"); } } }else{//year<1 System.out.println("输入错误"); } } //从控制台输入一个整数作为年份year,求出1~year之间 //所有的闰年和非闰年 //要求:如果输入值year大于等于1,直接求出1~year //之间所有闰年和非闰年,反之如果输入值year小于1, //直接输出输入错误。 //分析: //if(year>=1){ // for(int i=1;i<=year;i++){ // 闰年和非闰年 // } //}else{//year<1 // 输入错误 //} } public class Demo18 { //使用for循环,求出1~200之间所有的奇数累加之和和 //所有的偶数累加之和。 public static void main(String[] args) { int sum1=0,sum2=0; //sum1保存奇数累加之和,sum2保存偶数累加之和 for(int i=1;i<=200;i++){ if(i%2!=0){//奇数 sum1 = sum1 + i; }else{//偶数 sum2 = sum2 + i; } } System.out.println("奇数累加之和:"+sum1); System.out.println("偶数累加之和:"+sum2); } } import java.util.Scanner; public class Demo19 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入任意的一个整数:"); int num = sc.nextInt(); if(num>=1){ int sum=0; for(int i=1;i<=num;i=i+2){ sum = sum + i; } System.out.println("累加之和:"+sum); /* int sum = 0; for(int i=1;i<=num;i++){ if(i%2!=0){//奇数 sum = sum + i; } } System.out.println("累加之和:"+sum); */ }else{//num<1 System.out.println("输入错误"); } } //从控制台输入任意的一个整数num,求出1~num之间所有 //奇数的累加之和。 //要求:如果输入num>=1,求出1~num之间累加之和;反之 //如果输入num<1,输入错误 //if(num>=1){ // for(int i=1;i<=num;i++){ // if(i%2!=0){ // 累加之和 // } // } //}else{ //num<1 // 输入错误 //} }
3)for的死循环:表达式2永远都为true,循环体语句会被一直执行。
for(;表达式2;){
循环体语句
}
for(;;){//表达式2默认为true
循环体语句
}
案例:Demo20
public class Demo20 { public static void main(String[] args) { for(;;){ System.out.println("努力学习!"); } } }