switch()小括号中的支持的数据类型byte,short,int,char,string,
字符串string,在JDK1.7之后支持
JDK1.5之后支持枚举类型
不支持long,double,boolean.
注意:
default:当所有的case项目都没有匹配上就会执行,可以省略,可以任意位置.
break;可以不写,不写会发生一个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 能写出来的,三元运算符不一定能写出来.
---------------------------------------------------
谢谢!