语法:switch(用于判断的参数){case 常量表达式1:语句1;[break;]case 常量表达式2:语句2;[break;]...case 常量表达式n:语句n;[break;][default]:语句n+1;[break;]} 例如:
int grade=10; switch(grade) { case 10: case 9:System.out.println("评价:优");break; case 8:System.out.println("评价:良");break; case 7: case 6:System.out.println("评价:优");break; case 5: case 4: case 3: case 2: case 1: case 0:System.out.println("评价:差");break; default:System.out.println("评价无效");
switch关键字后括号内用于判断的参数可以是整数、枚举、字符串,case关键字右面是常量表达式,一个switch语句中可以存在多个case关键字,当常量表达式的值与参数相等时,执行该case关键字之后的语句。case关键字最右边时break语句,break语句可以跳出switch语句,如果执行完相应的语句之后还需要继续执行后面的语句,则可以不写这个break语句。如果参数没有匹配任何的case,则会执行default语句,当没有default语句时,跳出switch语句。
语法:while(布尔表达式){语句} 布尔表达式的返回值为布尔值,判断语句是否继续执行,大括号内的语句为循环体,表示可以被循环执行的语句。当返回的布尔值是真时,继续执行循环体,直到返回的布尔值为假,结束循环。以为一百以内的数求和为例,如下:
int sum=0; int i=1; while(i<=100) { sum=sum+i; i++; } System.out.println(sum);
这段代码中,执行到while语句时,先判断i的值是否小于等于100,此时i=1,i<=100为真,执行大括号中的循环体,为sum值加上i的值“1”,紧接着i做自加运算,得到2,继续进行判断,决定是否执行循环体。当i=100时,此时判断i<=100为真,继续执行循环体,为sum的加上100,i自加后变为101,紧接着进行判断,此时i的值大于100,返回的布尔值为假,结束循环。
while语句中的布尔表达式不能为空,不应该是常量,否则会出现无限循环和永不循环的情况。在循环体中,还要有能够改变条件表达式值得语句否则也会成为死循环。
语法:do{语句}while(布尔表达式);do...while是先执行语句,后进行判断,在执行语句前不考虑控制循环,while语句则是先判断,后执行语句,执行语句前首先要控制循环,例如:
int i=0; int j=0; System.out.println("执行循环前j="+j); while(i>1) { j++; } System.out.println("执行循环后j="+j);
int i=0; int j=0; System.out.println("执行循环前j="+j); do { j++; }while(i>1); System.out.println("执行循环后j="+j);
在上述两段代码中,使用while语句后,输出的结果为:“执行循环前j=0 执行循环后j=0”,而使用do...while语句得到的结果为“执行循环前j=0 执行循环后j=1”。显然,while语句在判断条件为假的情况下结束了循环,而do...while语句是在执行了一次语句之后进行条件判断。以判断两次输入的密码是否一致为例:
Scanner scanner = new Scanner(System.in); String pwdlString = "0"; String pwd2String = "-1"; do { System.out.println("请输入密码:"); pwdlString = scanner.nextLine(); System.out.println("请再次输入密码:"); pwd2String = scanner.nextLine(); if (!pwdlString.equals(pwd2String)) { System.out.println("您输入的密码不一致,请重新输入密码!"); } } while (!pwdlString.equals(pwd2String)); System.out.println("设置密码成功!");
这段代码可以实现在设置密码时使两次代码输入一致的效果,这段代码先进行两次密码输入,然后if语句判断两次输入的密码是否一致,不一致时输出提示语句,然后执行do...while语句的判断条件,在不一致的情况下继续执行语句。
语法:for(初始化表达式1;布尔表达式2;表达式3){语句} 初始化表达式1在循环开始前运行一次,可做赋值操作,布尔表达式2返回布尔值,控制循环是否继续执行,表达式3一般都是赋值表达式,在完成一次循环后执行。在for语句中首先执行初始化表达式1,然后判断布尔表达式2是否为真,如果是真则执行语句,当执行完语句后执行表达式3,表达式3执行结束后回到布尔表达式2的位置,如果布尔表达式2的值为假,跳出循环,如果为真,则继续执行循环。以一百以内所有整数相加为例:
int sum=0; for(int i=1;i<=100;i++) { sum=sum+i; } System.out.println("sum="+sum);
foreach语句的语法:for(type x:obj){引用了x的java语句;} type x是循环变量,依次将obj中的值赋给x,type是这个变量的类型,x是变量的名,冒号后的obj是一个可以被遍历的集合,例如数组。
int arr[]= {7,10,11,56,99}; for(int x:arr) { System.out.println(x); }
以百钱买百鸡为例,公鸡一只五文钱,母鸡一只三文钱,三只小鸡一文钱,一百文钱买一百只鸡,可以买三种鸡各多少只。
int cock,hen,chick; for(cock=1;cock<=20;cock++) { for(hen=1;hen<=33;hen++) { for(chick=3;chick<=99;chick+=3) { if(cock*5+hen*3+chick/3==100) { if(cock+hen+chick==100) { System.out.println("公鸡:"+cock+" 母鸡:"+hen+" 小鸡:"+chick); } } } } }
其结果为
公鸡:4 母鸡:18 小鸡:78
公鸡:8 母鸡:11 小鸡:81
公鸡:12 母鸡:4 小鸡:84
break关键字可以中断当前循环,让循环直接结束,continue关键字可以跳过后面的代码直接执行下一次循环。break关键字可以在while语句、do...while语句、for语句还有switch语句中使用,例如:
while(i>0) { i++; System.out.println(i); if(i==10) break; } System.out.println("循环停止");
for(int i=0;i<3;i++) { System.out.println("i="+i); for(int j=0;j<6;j++) { System.out.println("j="+j); if(j==4) { break; } } }
Loop:for(int i=0;i<3;i++) { System.out.println("i="+i); for(int j=0;j<6;j++) { System.out.println("j="+j); if(j==4) { break Loop; } } }
在多层循环中,break控制内层循环,不会控制外层循环,当需要控制外层循环时,可以为外层循环添加标签,这时候在break后也添加标签,就可以跳出任意指定的循环。
continue关键字的适用场景与break类似,但是不适用于switch。例如:
// 输出奇数 for(int i=1;i<=10;i++) { if(i%2==0) continue; System.out.println("i="+i); }
for(int i=0;i<3;i++) { System.out.println("i="+i); for(int j=0;j<6;j++) { if(j==4) continue; System.out.println("j="+j); } }
Loop:for(int i=0;i<3;i++) { System.out.println("i="+i); for(int j=0;j<6;j++) { if(j==4) continue Loop; System.out.println("j="+j); } }
原文:https://www.cnblogs.com/mlzhang/p/14423459.html