02.选择结构

1.程序结构:顺序结构,循环结构,选择结构

2.两个变量表比较,如果变量是基本数据类型(byte,short,int,long,float,double,char,boolean)用关系运算符(>,>=,<,<=,==,!=)表比较;如果变量是引用数据类型(String)表比较用equals()

//基本数据类型比较,用关系运算符
        int num1=10;
        int num2=8;
        boolean result1=num1==num2;
        System.out.println(result1);
        
        //引用数据类型比较用equals()
        String s1="我是中国人";
        String s2="我是中国人";
        boolean result2=s1.equals(s2);
        System.out.println(result2);

3.从键盘上接收用户的数据:

3.1:在类框架上面导包:import java.util.Scanner;
3.2:获得从键盘上接收数据的能力
Scanner input=new Scanner(System.in);
3.3:从键盘上接收数据

      int num1=input.nextInt();
      double num2=input.nextDouble(); 
      String num3=input.next();    

注意:键盘上不能接收char类型数据。

      eg://导包
import java.util.Scanner;
/**
public class UserInput{
/**
*程序的入口方法
*/
public static void main(String[] args){
  //获得从键盘上接收数据的能力
  Scanner input=new Scanner(System.in);
      System.out.println("请输入一个整数");
      //从键盘上接收一个整数并存在变量num1中
      int num1=input.nextInt();
      System.out.println("请输入一个小数:");
      //从键盘上接收一个double类型的数并存在变量num2中
      double num2=input.nextDouble();
      
      System.out.println("请输入一个字符串:");
      //从键盘上接收一个String类型的数并存在变量num3中
      String num3=input.next();
      
      System.out.println("从键盘上接收的整数为:"+num1);
      System.out.println("从键盘上接收的小数为:"+num2);
      System.out.println("从键盘上接收的字符串为:"+num3);
  }
}

4.基本if选择结构:解决只有一种情况的问题

4.1:语法:if(条件){
代码块;
}

基本if选择结构

4.2:执行流程:如果条件为true,就执行大括号中的代码块;如果条件为false,就执行if结构之后的语句。

      eg:public static void main(String[] args){
      System.out.println("中午的歌是否唱得好?(y/n)");
      //获得从键盘上接收数据的能力
      Scanner input=new Scanner(System.in);
      //从键盘上接收一个字符串并存在变量中
      String answer=input.next();
      //对结果判断
      if(answer.equals("y")){
          System.out.println("给每位同学发朵大红花");
      }
  }

5.if-else结构:解决有两种情况,这两情况始终要执行其中一种

5.1:语法 :if(条件){
代码块1;
}else{
代码块2;
}

if-else结构

5.2:执行流程:如果条件为true,就执行代码块1;如果条件为false,就执行代码块2;

      eg:public static void main(String[] args){
      System.out.println("明天中午的歌是否唱得好?(y/n)");
      //获得具有从键盘上接收数据的能力
      Scanner input=new Scanner(System.in);
      //从键盘上接收一个字符串并存在变量中
      String str1=input.next();
      //判断满足哪种情况
      if(str1.equals("y")){
          System.out.println("老师请大家吃饭");
      }else{
          System.out.println("大家请老师吃饭");
      }
  }

6.多重if选择结构:解决有两种及以上情况的问题

6.1:语法:if(条件1){
代码块1;
}else if(条件2){
代码块2;
}else if(条件3){
代码块3;
}else{
代码块4;
}

多重if选择结构

6.2:执行流程:如果条件1为true,就执行代码块1,再执行多重if结构之后的语句;如果条件1为false,就判断条件2,如果条件2为true,就执行代码块2,再执行多重if结构之后的语句;如果条件2为false,就判断条件3,如果条件3为true,就执行代码块3,再执行多重if结构之后的语句;如果条件3为false,就执行else块中代码块4。
6.3:结构特点:
6.3.1:多重if选择结构中if块有且仅有一个,else if块可以有0个到多个,else块可以有0个到1个。
6.3.2:多重if选择结构中,最多执行一个情况(分支),最少一个情况都不执行(没有else块并且前面的条件都为false);
6.3.3: 如果用多重if选择结构解决多种情况(分支)等值判断问题,分支之间可以互换置不影响结果;如果用多重if选择结构解决多种情况(分支)范围判断问题,分支之间不一定可以互换位置。

      eg:public static void main(String[] args){
      System.out.println("今天是星期几?(1-7):");
      //获得具有从键盘上接收数据的能力
      Scanner input=new Scanner(System.in);
      //从键盘上接收一个字符串并存在变量中
      int today=input.nextInt();
      //判断满足哪种情况
      if(today==1){
          System.out.println("早餐吃包子");
      }else if(today==2){
          System.out.println("早餐吃馒头");
      }else if(today==3){
          System.out.println("早餐吃油条豆浆");
      }else if(today==4){
          System.out.println("早餐吃肠粉");
      }else if(today==5){
          System.out.println("早餐吃拉面");
      }else if(today==6){
          System.out.println("早餐吃豆皮");
      }else{
          System.out.println("睡觉");
      }
  }
  public static void main(String[] args){
  System.out.println("请输入成绩(0-100):");
  //获得具有从键盘上接收数据的能力
  Scanner input=new Scanner(System.in);
  //从键盘上接收一个数并存在变量中
  double score=input.nextDouble();
  
  //判断满足哪种情况
  if(score>=90){
      System.out.println("优秀");
  }else if(score<80&&score>=60){
      System.out.println("合格");
  }else if(score<90&&score>=80){
      System.out.println("良好");
  }else{
      System.out.println("再接再厉");
  }

}

7.嵌套选择结构:在一个选择结构的代码块中完整包含了另一个选择结构

7.1:选择结构之间可以任意嵌套,但是嵌套要正确。
7.2:选择结构之间可以多层嵌套,但是一般两到三层嵌套。
题目:参加百米赛跑,如果跑步时间超过10秒,谢谢参与;如果跑步时间不超过10秒,恭喜你进入决赛;进入决赛后,输入性别,如果性别是男,恭喜你进入男子组决赛;如果性别是女,恭喜你进入 女子组决赛

  eg:public static void main(String[] args){
  //获得具有从键盘上接收数据的能力
  Scanner input=new Scanner(System.in);
  System.out.println("请输入你百米跑步的时间:");
  //从键盘上接收时间,并存在变量中
  double time=input.nextDouble();
  if(time>10){
      System.out.println("谢谢参与");
  }else if(time>=0&&time<=10){
      System.out.println("请输入你的性别(男/女):");
      //从键盘上接收性别,并存在变量中
      String sex=input.next();
      if(sex.equals("男")){
          System.out.println("恭喜你进入男子组决赛");
      }else if(sex.equals("女")){
          System.out.println("恭喜你进入女子组决赛");
      }else{
          System.out.println("性别输入有误!");
      }
  }else{
      System.out.println("时间输入有误!");
  }

}

8.switch结构:解决多种情况等值判断问题

8.1:语法:switch(表达式){
case 常量1:
代码块1;
break;
case 常量2:
代码块2;
break;
...
default:
default中的代码块;
break;
}
8.2:执行流程:如果表达式的结果等于常量1,就执行代码块1,遇到break或者结尾}就跳出switch结构,执行之后语句;如果表达式的结果等于常量2,就执行代码块2,遇到break或者结尾}就跳出switch结构,执行之后语句;如果表达式不等于case后面的任意一个常量值,就执行default中的代码块遇到break或者结尾}就跳出switch结构。
8.3:结构特点:
8.3.1:switch结构中的表达式和常量,在jdk1.5前,支持byte,short,int,char类型
在jdk1.5后,支持枚举类型
在jdk1.7后,支持String类型。
8.3.2:switch结构中,case块可以有0个到多个,default块可以有0个到1个。
8.3.3:在同一个switch结构中,case后面的常量值必须不同。
8.3.4:switch结构中,case块中break可以省略,但是省略break后,如果表达式等于当前case块的常量,执行完这个case块中的}代码后,没有遇到break和结尾会继续往下执行并且不再判断,直到遇到break和}结尾才会跳出switch结构.
一般情况下,case块中break不要省略。
8.3.5:switch结构中,default块可以放在switch结构的大括号任何地方,不影响程序的 执行。
8.3.6:switch结构中,case块之间可以互换位置,不影响程序的执行。
8.3.7:switch结构中,可以执行0个到多个情况。

  eg:public static void main(String[] args){
  System.out.println("今天是星期几?(1-7):");
  //获得具有从键盘上接收数据的能力
  Scanner input=new Scanner(System.in);
  //从键盘上接收一个字符串并存在变量中
  int today=input.nextInt();
  switch(today){
      case 1:
          System.out.println("早餐吃包子");
          break;
      case 2:
          System.out.println("早餐吃馒头");
          break;
      case 3:
          System.out.println("早餐吃油条豆浆");
          break;
      case 4:
          System.out.println("早餐吃肠粉");
          break;
      case 5:
          System.out.println("早餐吃拉面");
          break;
      case 6:
          System.out.println("早餐吃豆皮");
          break;
      case 7:
          System.out.println("睡觉");
          break;
      default:
          System.out.println("你的输入有误!");
          break;
  }
}

9.switch结构 VS 多重if选择结构

9.1:相同点:
9.1.1:都可以解决多种情况等值判断问题,首选switch结构;
9.1.2:在解决多种情况等值判断问题时,分支之间可以互换位置。
9.1.3:都是最少一种情况(分支)都不执行。
9.2:不同点:
9.2.1:作用不同:switch结构只能解决多种情况等值判断问题;
多重if选择结构既可以解决多种情况等值判断问题,又可以解决多种情况范 围判断问题。
9.2.2:条件不同:switch结构中的表达式和常量有类型限制;
多重if选择结构的条件是关系表达式,条件的结果是boolean.
9.2.3:执行不同:switch结构可以执行多个分支的代码块;多重if选择结构最多只能执行一个分支的代码块。
9.2.4:break不同:switch结构中可以用break跳出结构,多重if选择结构不能单独用。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,001评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,210评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,874评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,001评论 1 291
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,022评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,005评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,929评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,742评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,193评论 1 309
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,427评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,583评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,305评论 5 342
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,911评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,564评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,731评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,581评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,478评论 2 352

推荐阅读更多精彩内容