我正在尝试解决此问题,其中您输入一个数字1-7,该数字对应于一周中的几天(周一至周日),然后在(0-20)之间添加一个数字,程序将返回周。我当前的解决方案适用,但“星期日”除外。

public static void main(String[] args) {
    int day;
    int num;
    int newDay;
    String [] days = new String[] {"Monday", "Tuesday", "Wednesday", "Thursday",
                                    "Friday", "Saturday", "Sunday"};
    System.out.println("Enter the day and the number to add");
    Scanner scnr = new Scanner(System.in);
    day = scnr.nextInt();
    num = scnr.nextInt();
    newDay = (num + day) % 7;
    System.out.println(newDay);
    System.out.println("The new day is " + days[newDay - 1] );
}


如您所见,如果程序要按“ Sunday”,则数组将超出范围。我可以轻松地说“如果newDay = 0,设置newDay = 7”,但是我想看看是否有其他解决方案。

谢谢您的帮助!

最佳答案

我不完全了解您正在做的事情的数学/逻辑,但我认为我可以解释(并纠正)错误。在下面的代码行中:

newDay = (num + day) % 7;


newDay可以采用的值必须在0到6之间(包括0和6)。因此在我看来,您希望按如下方式访问您的日期数组:

System.out.println("The new day is " + days[newDay]);


这是有道理的,因为days具有七个元素,可通过从0到6(含0)的索引进行寻址。

10-07 22:27