我正在尝试解决此问题,其中您输入一个数字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)的索引进行寻址。