第十四届蓝桥杯集训——JavaC组第十一篇——switch
目录
第十四届蓝桥杯集训——JavaC组第十一篇——switch
swtich概述
switch语法
default作用
switch基础示例:
String类型switch示例
switch枚举判断
巧用break
石头剪刀布 测试代码:
swtich概述
Switch在一些计算机语言中是保留字,其作用大多情况下是进行判断选择。以C语言来说,switch(开关语句)常和case break default一起使用。
代码中虽然没有限制if else能够处理的分支数量 ,但当分支过多时,用 if else处理会不太方便 ,所以对于这种情况,实际开发中一般使用switch语句代替 。
switch语法
flag(标示)表示计算结果, 必须是整性, 字符串类型, 或者枚举类型。
switch (flag){
case 0 : 语句一; break;
case 1: 语句二; break;
default: 语句n; break;
}
default作用
default在当前switch找不到匹配的case时执行。default并不是必须的。
package com.item.action;
public class Main {
public static void main(String args[]) {
int x = 0;
switch (x) {
case 1:
System.out.println(1);
case 2:
System.out.println(2);
default:
System.out.println("default");
}
}
}
switch基础示例:
package com.item.action;
public class Main {
public static void main(String[] args) {
int flag = 3;
switch (flag){
case 0: System.out.println("The number is 0" ); break;
case 1: System.out.println("The number is 1" ); break;
case 2: System.out.println("The number is 2" ); break;
default: System.out.println("no have choose" ); break;
}
}
}
输出结果:
由于没有3这个case故而会走到default的路径上。
这是一个很标准的switch的用法,有break,还有default,在什么情况下跳出,在什么情况下结束运行,都很清楚的说明了,但是朋友们在写这个代码的时候,有可能会忘记加入break 或者忘记加入default这样的问题吧。
String类型switch示例
jdk1.7以上才支持·jdk1.7以下需要使用枚举/hashCode
package com.item.action;
public class Main {
public static void main(String[] args) {
String str = "C" ;
switch (str) {
case "A" :
System.out.println( "A" );
break ;
case "B" :
System.out.println( "B" );
break ;
case "C" :
System.out.println( "C" );
break ;
default :
System.out.println( 0 );
}
}
}
switch枚举判断
这个开发的过程中
package com.item.action;
public class Main {
static enum E {
A, B, C, D
}
public static void main(String args[]) {
E e = E.B;
switch (e) {
case A:
System.out.println( "A" );
break ;
case B:
System.out.println( "B" );
break ;
case C:
System.out.println( "C" );
break ;
case D:
System.out.println( "D" );
break ;
default :
System.out.println( 0 );
}
}
}
巧用break
输出2023年指定月份的最大天数·这里可以替换年份。
package com.item.action;
public class Main {
public static void main(String args[]) {
int year = 2023;
int month = 2;
int day = 0;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
day = 31;
break;
case 2:
boolean b = (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
day = b ? 29 : 28;
break;
case 4:
case 6:
case 9:
case 11:
day = 30;
break;
}
System.out.println(day);
}
}
石头剪刀布 测试代码:
这里我用的是String当做switch的判断。
package com.item.action;
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
int inp = 0; // 定义输入的数值
String sRnd = ""; // 随机数表示出拳
int numWin = 0; // 胜场
int numLost = 0; // 负场
Scanner sc = new Scanner(System.in);
while (true) {
boolean flag = true; // 立个flag备用
int rnd = (int) (1 + Math.random() * 3);
System.out.print("请输入【剪刀】、【石头】或【布】,输入【退出】结束游戏:");
String sInp = sc.next();
switch (sInp) {// 输入文字转数字
case "剪刀":
inp = 1;
break;
case "石头":
inp = 2;
break;
case "布":
inp = 3;
break;
case "退出":
System.out.println("您已退出!\n ");
return;
default:
System.out.println("输入有误! \n");// 输入错误时flag为假
flag = false;
break;
}
switch (rnd) {// 随机数转换成出拳
case 1:
sRnd = "剪刀";
break;
case 2:
sRnd = "石头";
break;
case 3:
sRnd = "布";
break;
default:
break;
}
if (flag == false) {// 前面立的flag为假了,跳过这次循环
continue;
} else if (inp == rnd) {
System.out.println("平局! 电脑也是" + sRnd + " 胜" + numWin + "负" + numLost + "\n");
} else if (inp == 1 && rnd == 3 || inp == 2 && rnd == 1 || inp == 3 && rnd == 2) { // 列出所有胜局情况
System.out.println("你赢了!电脑是" + sRnd + " 胜" + ++numWin + "负" + numLost + "\n");
} else {
System.out.println("电脑胜!电脑是 " + sRnd + " 胜" + numWin + "负" + ++numLost + "\n"); // 其他都是负局情况
}
if(numWin==2||numLost==2) {
break;
}
}
sc.close();
}
}
三局两胜制度。