第4章 流程控制
一、条件语句
1、if语句
1 if(布尔表达式){2 语句序列3 }4 /*5 布尔表达式如果为true则执行if代码块中的语句序列;6 反之则不执行。7 */
2、if…else语句
1 if(布尔表达式){ 2 语句序列 3 } 4 else{ 5 语句序列 6 } 7 /* 8 布尔表达式如果为true则执行if代码块中的语句序列; 9 反之则执行else代码块中的语句序列。10 如果一段代码中有多处if..else,则每一个else总是与它上面最近的一个if相匹配。11 */
1 /* 2 创建GetTerm类,在主方法中定义变量x,从控制台输入接受赋值,并通过if...else if多分支语句判断x的值决定输出结果。 3 */ 4 import java.util.Scanner; 5 public class GetTerm { 6 public static void main(String[] args){ 7 Scanner scan=new Scanner(System.in); 8 System.out.println("请输入一个整数:"); 9 int x=scan.nextInt();10 if(x>1000){11 System.out.println("x的值大于1000");12 }else if(x>500){13 System.out.println("x的值大于500,但小于1000");14 }else if(x>100){15 System.out.println("x的值大于100,但小于500");16 }else {17 System.out.println("x的值小于100");18 }19 scan.close();20 }21 }
3、switch多分支语句
1 switch(表达式){ //表达式的值必须是整型或者字符型 2 case 常量值1: //这里常量值必须与表达式的值对应,下同 3 语句序列1 4 break; //跳出switch语句块,如没有则会继续执行下一句 5 case 常量值2: 6 语句序列2 7 break; 8 ... 9 default: //当上述各case的常量值没有匹配时候则从此处执行10 语句序列;11 break;12 }
1 import java.util.Scanner; 2 public class Switch_Example { 3 public static void main(String[] args){ 4 Scanner scan=new Scanner(System.in); 5 System.out.println("请输入你的姓名:"); 6 String name=scan.nextLine(); 7 System.out.println("请输入你的专业编号(0~9):"); 8 int majorLanguage=scan.nextInt(); 9 10 switch(majorLanguage){11 case 0:12 case 1:13 case 2:14 System.out.println("恭喜你,"+name+"你被分配到办公室");15 break;16 case 3:17 case 4:18 case 5:19 case 6:20 System.out.println("恭喜你,"+name+"你被分配到总工办");21 break;22 case 7:23 case 8:24 case 9:25 System.out.println("恭喜你,"+name+"你被分配到财务处");26 break;27 default:28 System.out.println("抱歉,你未被录用"); 29 }30 scan.close();31 }32 }
二、循环语句
1、while语句while(条件表达式){ //条件表达式必须为布尔类型 语句序列; //条件表达式为true则执行该语句序列} //否则退出循环
2、do…while语句
do { 语句序列;}while(条件表达式) /*与while语句的区别可以从顺序上理解出,即便条件表达式为false,也会执行一次do代码块里的指令*/
3、for语句
for(表达式1;表达式2;表达式3){ 语句序列;}/*表达式1:初始化工作表达式2:为布尔类型,用于判断循环条件表达式3:改变循环条件判断参数执行流程:先通过表达式1进行初始化设置工作,再判断表达式2,如果为true则执行语句序列,再通过表达式3改变循环条件判断参数;进入第二次循环时候先判断表达式2,如果为true则执行语句序列,再通过表达式3改变循环条件判断参数;直至某次判断表达式2为false则跳出循环。*/
1 //用for循环输出九九乘法表 2 public class MultiTable { 3 public static void main(String[] args){ 4 for(int i=1;i<10;i++){ 5 for(int j=1;j
4、foreach语句
for(元素变量x:遍历对象obj){ 语句序列(一般会对x有操作)}/*foreach是for语句的特殊简化格式,从上述示例代码可以看出foreach并不是所用的关键字,而是习惯上对这种循环的称谓。*/
1 //使用foreach语句读取一位整型数组各元素 2 public class Repetition { 3 public static void main(String[] args){ 4 int arr[]={1,3,4,7,8,10}; 5 System.out.println("一维数组中各元素分别为:"); 6 for(int x:arr){ 7 System.out.println(x+"\t"); 8 } 9 }10 }
三、跳转语句
1、break语句 break只可以用在switch\for\while\do..while循环语句中,用于强行退出整个循环体。 2、continue语句 continue只能用在for\while\do…while循环语句中,用于直接跳出当前循环进入下一次循环。1 //计算1~100各偶数之和 2 public class ContinueDemo { 3 public static void main(String[] args){ 4 for(int sum=0,i=0;i<101;i++){ 5 if(i%2==0){ 6 sum+=i; 7 }else { 8 continue; 9 }10 if(i==100){11 System.out.println("0~100内偶数之和是"+sum);12 }13 }14 }15 }
1 public class CatchBird { 2 public static void main(String[] args){ 3 String[] birdArray=new String[]{"麻雀","鸽子","百灵","布谷","老鹰","鹦鹉","老鹰","翠鸟","斑鸠","老鹰","黄鹂"}; 4 int laoYingNumber=0; 5 for(String birdString:birdArray){ 6 if(birdString.equals("老鹰")){ 7 System.out.println("一只老鹰已经被我抓起来了"); 8 laoYingNumber++; 9 continue;10 }11 System.out.println("发现了一只"+birdString); //这里当然也可以用if-else12 }13 System.out.println("总共抓住了"+laoYingNumber+"只老鹰");14 }15 }
1 //计算1+1/2!+1/3!+...+1/20!的值 2 public class x1 { 3 public static void main(String[] args){ 4 double sum=0; 5 long a=1L; 6 for(long i=1L;i<21;i++){ 7 for(long j=1L;j<=i;j++){ 8 a=a*j; 9 }10 sum+=1/(double)a; //强制浮点运算11 a=(long)1; //重置为长整型数值12 System.out.println(sum);13 }14 }15 }