Java控制语句

  • 分支控制if - -else
    • 单分支

      • 基本语法:if(条件表达式){执行代码块};
      • 说明:当条件表达式为true时,就会执行{ }里面的代码,若为flase,就不执行,
    • 双分支.

      • if(条件表达式1){执行代码块1; }
        else if(条件表达式2){执行代码块2;  }
        else if(3){3;}
        else{ n;}
        
    • 嵌套分支

      if(){
      if(){
      //if-else...
       }else{
      //if-else
        }
      }
      
      参加歌手比赛,如果初赛成绩大于 8.0 进入决赛,否则提示淘汰。并且根据性别提示进入男子组或女子组。 输入成绩和性别,进行判断和输出信息。
      import java.util.Scanner;
      System.out.println("请输入初赛成绩:");
              double score = new Scanner(System.in).nextDouble();
              if (score > 8.0)
              {
                  System.out.println("请输入性别");
                  char gender = new Scanner(System.in).next().charAt(0);
                  if (gender == '男')
                  {
                      System.out.println("进入男子组");
                  } else if (gender == '女')
                  {
                      System.out.println("进入女子组");
                  } else
                  {
                      System.out.println("性别有误,不能参加决赛");
                  }
      
      
              } else
              {
                  System.out.println("很遗憾,未进入决赛");
              }
      
      import java.util.Scanner;
              System.out.println("请输入月份:");
              int a = new Scanner(System.in).nextInt();
              System.out.println("请输入年龄:");
              int age = new Scanner(System.in).nextInt();
              if (a <= 10 && a >= 4) {
                  if (age >= 18 && age <= 60) {
                      System.out.println("票价为60元");
                  } else if (age <= 18) {
                      System.out.println("票价为30元");
                  } else if (age >= 60) {
                      System.out.println("票价为20元");
                  }
              } else {
                  if (age >= 18 && age <= 60) {
                      System.out.println("票价为40元");
                  } else {
                      System.out.println("票价为20元");
                  }
      
  • switch分支结构
  • 基本语法

    switch(表达式){              //swich关键字表示swich分支,表达式对应一个值
        case 常量1:             //当表达式的值等于常量1,就执行语句块1
            语句块1;
            break;             //退出swich
        case 常量2;           //如果和case常量1匹配,就执行语句块1,如果没有匹配,就继续匹配case2
           语句块2;
           break;
           ...
        case 常量n;
           语句块n;
           break;
        default:default语句块2;       //如果一个都没有匹配上,就执行语句块default
        break;
    }
    
  • 细节

    1. 表达式的数据类型应与case后的常量类型一致,或者是可以自动转成可以相互比较的类型

    2. 表达式的返回值必须是(byte short int char enum[枚举] String)

      double c=1.1;
      switch (c){                 //错误
          case 1.1:               //错误
              System.out.println("ok3" );
              break;
      }
      
    3. case子句中的值必须是常量,而不能是变量

    4. default子句是可选的,当没有匹配的case时,执行default

    5. 如果没有写break,会顺序执行到switch结尾

    请编写一个程序,该程序可以接收一个字符,比如:a,b,c,d,e,f,g  
    a表示星期一,b表示星期二 …  
    根据用户的输入显示相应的信息.要求使用 switch 语句完成
    	
     System.out.println("请输入字符(a~g):");
            char A = new Scanner(System.in).next().charAt(0);
            switch(A){
                case 'a':
                    System.out.println("星期一");
                    break;
                case 'b':
                    System.out.println("星期二");
                    break;
                case 'c':
                    System.out.println("星期三");
                    break;
                default:
                    System.out.println("字符不正确,匹配不成功");
            }
            System.out.println("退出switch,继续执行程序");
    
         //对学生成绩大于60分的,输出"合格"。低于60分的,
    	//输出"不合格"。(注:输入的成绩不能大于100), 提示 成绩/60
    	//思路分析
    	//1. 这道题,可以使用 分支来完成, 但是要求使用switch
    	//2. 这里我们需要进行一个转换, 编程思路 : 
    	//   如果成绩在 [60,100] , (int)(成绩/60) = 1 
    	//   如果成绩在 [0,60) , (int)(成绩/60) = 0 
    	
    	//代码实现
    	Scanner sc = new Scanner(System.in);
    	System.out.println("请输入成绩在0-100之间:");
    	double score = sc.nextDouble();
    	if (score >= 0 && score<=100) {
    	    switch ((int) (score / 60)) {
    	        case 0:
    	            System.out.println("不合格");
    	            break;
    	        case 1:
    	            System.out.println("合格");
    	    }
    	}else{
    	    System.out.println("请输入成绩在0-100之间");
    	}
    
    
  • switch 和 if 的比较
    1. 如果判断的具体数值不多,并且符合byte short int enum[枚举] String这六种类型,建议switch语句
    2. 其他情况:对区间判断,对结果为boolean类型判断,使用if ,if的适用范围更广
  • for循环控制
    • 基本语法

      for(循环变量初始化;循环条件;循环变量迭代){
          循环操作语句;
      }
      
      for(;循环条件;) 可以写到其他地方,但是分号不能省略  也可以有多条语句,但是必须用,隔开
      int i=1;
      for(;i<=10;){
          System.out.println("lwh"+i);
          i++;
      }
          System.out.println(i);
          
      count=3;
      (int i = 0,j=0; i<count;i++,j+=2){
           System.out.println("i="+i+" j="+j);
      }
      
    • 打印 1~100 之间所有是 9 的倍数的整数,统计个数及总和. `[化繁为简,先死后活]`
      1. 化繁为简 : 即将复杂的需求,拆解成简单的需求,逐步完成
      2. 先死后活 : 先考虑固定的值,然后转成可以灵活变化的值
      
      思路分析
      打印1~100之间所有是9的倍数的整数,统计个数  及 总和
      化繁为简
      (1) 完成 输出 1-100的值
      (2) 在输出的过程中,进行过滤,只输出9的倍数  i % 9 ==0
      (3) 统计个数 定义一个变量 int count = 0; 当 条件满足时 count++;
      (4) 总和 , 定义一个变量 int sum = 0; 当条件满足时累积 sum += i;
      
      int cont=0;
              int sum=0;
              for(int i=1;i<=100;i++)
              {
                  if(i%9==0){
                      System.out.println("i="+i);
                      cont++;
                      sum+=i;
                  }
              }
              System.out.println("个数"+cont+"总和"+sum);
      
  • while循环控制
    • 基本语法

      循环变量初始化;
      while(循环条件){
           循环体(语句);
           循环变量迭代;
      }
      
      1. 循环条件是返回一个布尔值的表达式
      2. while 循环是先判断再执行语句
      
    • 输出10句 你好,皮卡丘
      	
      	int i = 1;                                    //循环变量初始化
      	while( i <= 10 ) {                           //循环条件
      		System.out.println("你好,皮卡丘" + i);    //执行语句
      		i++;                                     //循环变量迭代
      	}
      	System.out.println("退出while ,继续.." + i); // 11
      
    •  打印 1-100 之间所有能被 3 整除的数 [使用 while ]
           int i =1;
           while (i<=100){
           if(i%3==0){
           System.out.println("i="+i);
           }
           i++;
           }
      
  • do while循环控制
    • 基本语法

      循环变量初始化;
      do{
      循环体(语句);
      循环变量迭代;
      }while(循环条件);
      
      do while 是关键字
      也有循环四要素, 只是位置不一样
      先执行,再判断,也就是说,一定会至少执行一次
      最后 有一个 分号 ;
      循环条件是返回一个布尔值的表达式
      do…while 循环是先执行,再判断, 因此它至少执行一次
      
      输出 10 句:你好,皮卡丘
      
      int i = 1;
      	do {
      	    System.out.println("你好,皮卡丘"+i);
      	    i++;
      	} while (i <= 10);
      	System.out.println("退出 do...while 继续执行....");
      
      计算 1—10 的和
      
      int i = 1;
      	int sum = 0;
      	do {
      	   sum += i;
      	   System.out.println(i);
      	   i++;
      	} while (i <= 10);
      	System.out.println("sum="+sum);
      
      统计 1—200 之间能被 5 整除但不能被 3 整除的个数
              int a=1;
              int count=0;
              do {
                  if(a%5==0&&a%3!=0){
                      System.out.println("i=" + a);
                      count++;
                  }
                  a++;
              } while (a<=200);
              System.out.println("count=" + count);
      
      如果李三不还钱,则李四将一直使出五连鞭,直到李三说还钱为止
          化繁为简
      	(1) 不停的问还钱吗?
      	(2) 使用char answer 接收回答, 定义一个Scanner对象
      	(3) 在do-while 的while 判断如果是 y 就不在循环
      	Scanner myScanner  = new Scanner(System.in);
      	char answer = ' ';
      	do {
      		System.out.println("李四使出五连鞭~");
      		System.out.println("李四问:还钱吗?y/n");
      		answer = myScanner.next().charAt(0);
      		System.out.println("他的回答是" + answer);
      	}while(answer != 'y');//判断条件很关键
      	
      	System.out.println("李三还钱了");
      
      

r = new Scanner(System.in);
char answer = ’ ';
do {
System.out.println(“李四使出五连鞭~”);
System.out.println(“李四问:还钱吗?y/n”);
answer = myScanner.next().charAt(0);
System.out.println(“他的回答是” + answer);
}while(answer != ‘y’);//判断条件很关键

	System.out.println("李三还钱了");

```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值