zoukankan      html  css  js  c++  java
  • Java入门系列-08-选择结构

    这篇文章为你搞懂2个问题

    1. if-else选择结构的使用?
    2. switch 的使用?

    前面我们学习的代码都是直上直下的执行,还不会“拐弯”,这篇文章带大家来看一下会“拐弯”的代码——选择结构,顾名思义就有选择性的执行代码。

    if-else 选择结构

    简单if结构

    只有一种执行情况,表达式结果为true时执行结构内代码片段,为false时不执行

    语法:

    if(表达式){
        代码片段
    }
    

    敲一敲:

    import java.util.Scanner;
    
    public class DemoIf {
    	public static void main(String[] args) {
    		Scanner input=new Scanner(System.in);//创建扫描器
    		System.out.println("请输入你的年龄:");
    		int age=input.nextInt();
    		if(age>=18){
    			System.out.println("你已经成年了!");
    		}
    		System.out.println("程序结束");
    	}
    }
    

    如果在控制台输入了一个大于等于18的数,那么表达式中的结果为 true 会输出 “你已经成年了!程序结束” 否则只会输出“程序结束”

    if-else 结构

    有两个代码段,执行结果只有一个,执行哪个代码段仍然是由 if 中的表达式决定,如果表达的结果为 true 则执行 if 后的代码段,为 false 时执行 else 后面的代码段。

    语法:

    if(表达式){
        代码段1(表达式为 true 执行)
    }else{
        代码段2(表达式为 false 执行)
    }
    

    敲一敲:

    import java.util.Scanner;
    
    public class DemoIf {
    	public static void main(String[] args) {
    		Scanner input=new Scanner(System.in);//创建扫描器
    		System.out.println("请输入你的年龄:");
    		int age=input.nextInt();
    		if(age>=18){
    			System.out.println("你已经成年了!");
    		}else {
    			System.out.println("你还没有成年!");
    		}
    		System.out.println("程序结束");
    	}
    }
    

    if-else if 多重选择结构

    有多个选择条件,但是执行的结果只有一个。执行时会从上向下逐个检查表达式是否为 true ,如果表达式为 true 执行对应的代码段,并且后面的表达不再检查,如果为 false 会继续向下检查,直到遇到 表达式结果为 true 执行代码段。如果所有的表达式检查一遍后都为false,则执行 else。

    语法:

    if(表达式1){
        代码段1
    }else if(表达式2){
        代码段2
    }
    ……
    else{
        所有条件都不满足时执行
    }
    

    敲一敲:

    import java.util.Scanner;
    
    public class DemoMultipleif {
    	public static void main(String[] args) {
    		Scanner input=new Scanner(System.in);
    		System.out.println("请输入你的成绩:");
    		int score=input.nextInt();
    		if(score>=90) {
    			System.out.println("成绩等级为:A");
    		}else if(score>=80&&score<90) {
    			System.out.println("成绩等级为:B");
    		}else if(score>=70&&score<80) {
    			System.out.println("成绩等级为:C");
    		}else if(score>=60&&score<70) {
    			System.out.println("成绩等级为:D");
    		}else {
    			System.out.println("成绩等级为:E");
    		}
    	}
    }
    

    switch 选择结构

    switch 结构和多重 if 的功效是一样的,多重if更适合范围和区间的判断,switch更适合等值判断。

    语法:

    switch(表达式){
    case 常量1:
        代码段1
        break;
    case 常量2:
        代码段2
        break;
    ……
    default:
        所有的case都不满足时
        break;
    }
    

    switch 中的表达式就是要和多个常量对比的条件,表达式可以是 String(jdk1.7及以上)、byte、short、int、char、枚举类型。case 后面是常量,常量是像 1 'a'这样的数据或者是 final 关键字修饰后的常量类型。多个 case 后的常量不能重复。

    敲一敲:

    import java.util.Scanner;
    
    public class DemoSwitch {
    	public static void main(String[] args) {
    		Scanner input=new Scanner(System.in);
    		System.out.println("输入1-7的数字,查看周一到周日的菜谱:");
    		int day=input.nextInt();
    		switch (day) {
    		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("输入的数组有误!输入1-7的数字");
    			break;
    		}
    	}
    }
    

    break关键字在结构中的作用是中断后面代码的执行,所以在每个case 语句后都有一个break,确保每执行一个case 便不再执行其他 case,但是也有例外可以省略break,编写下面的代码感受一下。

    敲一敲:

    import java.util.Scanner;
    
    public class DemoNoBreak {
    	public static void main(String[] args) {
    		Scanner input=new Scanner(System.in);
    		System.out.println("输入1-7的数字,查看周一到周日的菜谱:");
    		int day=input.nextInt();
    		switch (day) {
    		case 1:
    		case 3:
    		case 5:
    			System.out.println("一、三、五:番茄牛腩");
    			break;
    		case 2:
    		case 4:
    			System.out.println("二、四:锅包肉");
    			break;
    		case 6:
    		case 7:
    			System.out.println("周六、日:可乐鸡翅");
    			break;
    		default:
    			System.out.println("输入的数组有误!输入1-7的数字");
    			break;
    		}
    	}
    }
    

    如果一些case 语句的执行结果都是相同的,那么就可以省略掉break,让代码继续向下执行,直到遇到另一个break。

    试一试

    1. 下面代码的运行结果是什么,解释其原因
    public class Question1 {
    	public static void main(String[] args) {
    		char chr='a';
    		switch (chr) {
    		case 96:
    			System.out.println(96);
    			break;
    		case 97:
    			System.out.println(97);
    			break;
    		case 98:
    			System.out.println(98);
    			break;
    		default:
    			System.out.println("啥也没有");
    			break;
    		}
    	}
    }
    
    1. 下面代码的运行结果是什么?为什么会这样?
    public class Question2 {
    	public static void main(String[] args) {
    		int a=10;
    		if(++a>10||++a>11) {
    			a++;
    		}
    		System.out.println("a的结果:"+a);
    	}
    }
    

    鼓励你在留言中发布自己的答案,与其他人一起交流,并在百度上搜索相关问题
    关注公众号"享智同行"回复"008"获取答案和解析

    关注公众号"享智同行"回复"008"获取答案和解析

  • 相关阅读:
    【沟通的艺术】你能勾住你的听众么?
    java环境变量配置
    20140613故障处理纪要
    FBReaderJ源代码编译配置
    怎样加入� android private libraries 中的包的源码
    petshop4.0 具体解释之中的一个(系统架构设计)
    java推断字符串是否为乱码
    php递归无限极分类
    SIP入门(二):建立SIPserver
    线程间的通信
  • 原文地址:https://www.cnblogs.com/AIThink/p/9665157.html
Copyright © 2011-2022 走看看