2017-10-11 12 views
0

나는이 문제를 해결하려고합니다. 요일에 해당하는 1-7을 입력하고 (월요일 - 일요일), 그 다음에 (0-20) 프로그램은 요일을 반환합니다. 현재 솔루션은 '일요일'을 제외하고 작동합니다.Java : 간단한 배열 및 수정

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]); 
} 

프로그램에서 볼 수 있듯이 프로그램이 "일요일"에 맞으면 배열이 범위를 벗어납니다. 간단히 말해서 "newDay = 0, newDay = 7을 설정하면"이라고 말할 수 있지만 다른 해결책이 있는지 알고 싶습니다.

도움 주셔서 감사합니다.

+0

"newDay"가 0이면 문제가 어디 있는지 알 수 있습니다. – LHCHIN

답변

2

당신이하고있는 일의이면에있는 수학/논리를 완전히 이해하지 못하고 있지만 오류를 설명 할 수 있다고 생각합니다. 다음 코드 줄에서 :

newDay = (num + day) % 7; 

newDay는 0과 6 포괄적이어야에 취할 수있는 값. days는 0에서 6 인덱스에 의해 일곱 개 요소 주소를 가지고 있기 때문에

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

이 의미가 있습니다 : 그래서 다음과 같이 일의 배열에 액세스 할 것이라고 나에게 보인다.