【Java学习】switch--case语句和三元运算符(3)

switch语句和三元运算符

  • switch--case
    • case穿透
    • 三元运算符

switch–case

switch()小括号中的支持的数据类型byte,short,int,char,string,
字符串string,在JDK1.7之后支持
JDK1.5之后支持枚举类型
不支持long,double,boolean.

注意:
default:当所有的case项目都没有匹配上就会执行,可以省略,可以任意位置.
break;可以不写,不写会发生一个case穿透的现象.(以下就利用了case穿透)

case穿透

代码

//写出下面程序运行的结果
int num = 0;
switch(num) {
default:
System.out.println("Default");
case 1:
System.out.println("1");
case 2:
System.out.println("2");
case 3:
System.out.println("3");
}


Default
1
2
3

例:查看你的分数是不及格or优秀

代码

package com.jingfei.csdn;

import java.util.Scanner;

public class Score {
        public static void main(String[] args) {
            wc:while (true) {
                Scanner sc = new Scanner(System.in);
                System.out.println("输入你的分数:");
                int num = sc.nextInt();
        if(num>=0&&num<=100){
                switch (num / 10) {
                    case 0:
                    case 1:
                    case 2:
                    case 3:
                    case 4:
                    case 5:
                        System.out.println("不及格 ");
                        break wc;
                    case 6:
                    case 7:
                    case 8:
                        System.out.println("良好");
                        break wc;
                    case 9:
                    case 10:
                        System.out.println("厉害");
                        break wc;
                    default:
                        System.out.println("这一步好像没用");
                        break;
                }

            }else {
            System.out.println("请输入0--100之内的数:");
        }
        }
        }
    }


结果:

输入你的分数:
-1
请输入0--100之内的数:
输入你的分数:
101
请输入0--100之内的数:
输入你的分数:
100
厉害

Process finished with exit code 0

例子:
请根据键盘输入的月份,打印出对应月份的天数。
1月: 31天
2月: 28天
3月: 31天
4月: 30天
5月: 31天
6月: 30天
7月: 31天
8月: 31天
9月: 30天
10月: 31天
11月: 30天
12月: 31天

package com.jingfei.month;

import java.util.Scanner;

public class Month {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入你要查询的月份,比如一月就输入1");
        int mon = sc.nextInt();
        switch (mon) {
            case 1:
            case 3:
            case 5:
            case 7:
            case 8:
            case 10:
            case 12:
                System.out.println(mon + "月有31天!");
                break;
            case 2:
                System.out.println(mon + "月有28天!");
                break;
            case 4:
            case 6:
            case 9:
            case 11:
                System.out.println(mon + "月有30天!");
            default:
                System.out.println("请输入1--12之间的正整数!");
        }
    }

}

switch和if的区别:
switch是对常量的选择,不能对范围选择
if既可以对常量进行选择,也可以对范围选择.
-------------------------------------------------

三元运算符

比较两个数的大小

package com.jingfei.csdn;

public class ThreeCalc {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int max = a > b ? a : b;
        System.out.println("最大值为:"+max);
    }
}

使用三元运算符完成如下练习(数据来自于键盘录入)
比较两个数是否相等
获取两个数中最大值
获取三个数中最大值

package com.jingfei.maxnumber;

import java.util.Scanner;

public class MaxNumber {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入第一个数:");
        int oneNumber = scanner.nextInt();
        System.out.println("输入第二个数:");
        int twoNumber = scanner.nextInt();
        System.out.println("这两个数相等吗?\t" + bigorsmall(oneNumber, twoNumber));//调用比较是否相等
        numbermax(oneNumber, twoNumber);//调用
        System.out.println("输入第三个数,与前两个数比较大小");
        int threeNumber = scanner.nextInt();
        System.out.println("这三个数的最大值为:" + numbermax(oneNumber, twoNumber, threeNumber));

    }

    //方法重载一下
    private static int numbermax(int oneNumber, int twoNumber, int threeNumber) {

        int max = oneNumber > twoNumber ? oneNumber : twoNumber > threeNumber ? oneNumber > twoNumber ? oneNumber : twoNumber : threeNumber;
        return max;
    }

    private static boolean bigorsmall(int oneNumber, int twoNumber) {
        if (oneNumber == twoNumber) {
            return true;
        } else {
            return false;
        }
    }

    private static void numbermax(int oneNumber, int twoNumber) {
        int max = oneNumber > twoNumber ? oneNumber : twoNumber;
        System.out.println("最大值为 " + max);
    }
}

三元运算符和if的区别
只要三元运算符能写出来的,if else都能写出来
但if else 能写出来的,三元运算符不一定能写出来.

---------------------------------------------------
谢谢!

你可能感兴趣的:(初学Java)