怎么把switch转换成数组解题?

问题遇到的现象和发生背景

问题描述:

   在平时日常生活中通常需要回答当月的某日期为星期几的问题,常常通过提供你当月某天是星期几,然后需要计算当月的某日期为星期几。提供当月日期和星期的数(用阿拉伯数表示,0Sunday1Monday2Tuesday3Wednesday4Thursday5Friday6Saturday),然后提供一个当月的日期号数,请计算该日期号数为星期几,使用英文单词输出星期几。

输入:

  标准输入,输入的第一行为计算用例数为整数n,接下来的n行,每行有3个由空格分开整数,其中第一个整数为当月的日期数,第二个整数为第一个整数表示的日期日的星期几,第三个整数是需要你回答当月该日期是星期几,如该行输入为:1 3  10,表示当月的1号为星期三,请问当月的10号为星期几。

输出:

 标准输出:每一个计算的结果使用一行输出,输出使用英文单词输出星期几。

输入样例:

2
1 3 10
10 0 5

输出样例:

Friday
Tuesday

问题相关代码,请勿粘贴截图

import java.util.Scanner;
public class weekquestion{
public static void main(String[] args) {
int i = 0;
int number;
Scanner reader = new Scanner(System.in);
int n = reader.nextInt();
for(i=0;i<n;i++)
{
int mouth = reader.nextInt();
int day = reader.nextInt();
int date = reader.nextInt();
number = Math.abs((day+28+(date-mouth))%7);
switch (number)
{
case 0 :System.out.println("Sunday");break;
case 1 :System.out.println("Monday");break;
case 2 :System.out.println("Tuesday");break;
case 3 :System.out.println("Wednesday");break;
case 4 :System.out.println("Thursday");break;
case 5 :System.out.println("Friday");break;
case 6 :System.out.println("Saturday");break;
}
}
}
}

你用字符串数组存周一到周日,然后再通过number作为下标找到数组中的星期

img

import java.util.Scanner;
 public class weekquestion{
public static void main(String[] args) {
int i = 0;
int number;
String[] str = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
Scanner reader = new Scanner(System.in);
int n = reader.nextInt();
for(i=0;i<n;i++)
{
int mouth = reader.nextInt();
int day = reader.nextInt();
int date = reader.nextInt();
number = Math.abs((day+28+(date-mouth))%7);
System.out.println(str[number]);
}
}
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

//对应的case 值 转换为 数组的索引值 case 为0 就代表是 数组索引为0, case 为1 就代表是 数组索引为1, 同理下面的数


import java.util.*;

public class test
{
    public static void main(String[] args){
        
int i = 0;
int number;
Scanner reader = new Scanner(System.in);
int n = reader.nextInt();
for(i=0;i<n;i++)
{
int mouth = reader.nextInt();
int day = reader.nextInt();
int date = reader.nextInt();
number = Math.abs((day+28+(date-mouth))%7);

//对应的case 值 转换为 数组的索引值    case0  就代表是  数组索引为0case1 就代表是  数组索引为1, 同理下面的数
String[] strArray={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
System.out.println(strArray[number]);
//switch (number)
//{
//case 0 :System.out.println("Sunday");break;
//case 1 :System.out.println("Monday");break;
//case 2 :System.out.println("Tuesday");break;
//case 3 :System.out.println("Wednesday");break;
//case 4 :System.out.println("Thursday");break;
//case 5 :System.out.println("Friday");break;
//case 6 :System.out.println("Saturday");break;
//}
}
    }
}