题目:
编写程序:从键盘输入2021年的月(month)和日(day),通过程序输入输出的日期为2021年的第几天。
正向思维:
public class switchCaseTest04 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入月份:"); int month = sc.nextInt(); System.out.println("请输入几号:"); int day = sc.nextInt(); int num = 0; switch (month){ case 1: num=day; System.out.println(month+"月"+day+"日"+"是2021年的第"+num+"天"); break; case 2: num=31+day; System.out.println(month+"月"+day+"日"+"是2021年的第"+num+"天"); break; case 3: num=31+28+day; System.out.println(month+"月"+day+"日"+"是2021年的第"+num+"天"); break; case 4: num=31+28+31+day; System.out.println(month+"月"+day+"日"+"是2021年的第"+num+"天"); break; case 5: num=31+28+31+30+day; System.out.println(month+"月"+day+"日"+"是2021年的第"+num+"天"); break; case 6: num=31+28+31+30+31+day; System.out.println(month+"月"+day+"日"+"是2021年的第"+num+"天"); break; case 7: num=31+28+31+30+31+30+day; System.out.println(month+"月"+day+"日"+"是2021年的第"+num+"天"); break; case 8: num=31+28+31+30+31+30+31+day; System.out.println(month+"月"+day+"日"+"是2021年的第"+num+"天"); break; case 9: num=31+28+31+30+31+30+31+31+day; System.out.println(month+"月"+day+"日"+"是2021年的第"+num+"天"); break; case 10: num=31+28+31+30+31+30+31+31+30+day; System.out.println(month+"月"+day+"日"+"是2021年的第"+num+"天"); break; case 11: num=31+28+31+30+31+30+31+31+30+31+day; System.out.println(month+"月"+day+"日"+"是2021年的第"+num+"天"); break; case 12: num=31+28+31+30+31+30+31+31+30+31+30+day; System.out.println(month+"月"+day+"日"+"是2021年的第"+num+"天"); break; } } }
逆向思维:switch...case部分
switch (month) { case 12: num += 30; case 11: num += 31; case 10: num += 30; case 9: num += 31; case 8: num += 31; case 7: num += 30; case 6: num += 31; case 5: num += 30; case 4: num += 31; case 3: num += 28; case 2: num += 31; case 1: num += day; } System.out.println(month + "月" + day + "日" + "是2021年的第" + num + "天");
注意:逆向思维的switch...case中没有出现break。break关键字如果使用在switch...case中,就跳出该结构。但break在switch...case的结构中是可选的。逆向思维中没有使用该关键字,则执行一个case时,不会跳出循环。(如有不周之处,请指正。)