第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<i+1;j++){ 6 System.out.println(j+"*"+i+"="+j*i+" "); 7 } 8 System.out.println(); //换行 9 } 10 } 11 }
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-else 12 } 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 }
时间: 2024-10-11 09:49:35