오류 내용은 원문 그대로를 올려주시는 게 좋습니다. 해석하신 내용이 오류의 핵심을 충분히 반영하지 못하고 있습니다.
해당 에러가 발생하는 원인은 A와 B가 "초기화되지 않았을 수도 있기 때문"입니다. 변수는 선언한 것 자체로는 초기화가 되지 않습니다. 물론, 이 문제의 입력 제한상 A와 B는 반드시 15, 16번째 줄에서 대입이 될 것이지만, 컴파일러는 이 조건을 알지 못하기 때문에 testCase가 0보다 작거나 같아서 루프가 한 번도 돌지 못하는 상황도 고려해야 합니다. 이 경우 A와 B에 아무것도 대입되지 않은 채로 이 값을 사용하려 할 수 있고, 자바 가상 머신은 이런 경우를 결코 원하지 않기 때문에 컴파일 단계에서 미리 차단하는 것입니다.
그리고 A와 B를 처음에 초기화한다고 해도 이 코드는 의도하신 대로 동작하지 않습니다. 원하시는 출력은 i번 케이스에서 입력된 A와 B 값을 출력하는 것이지만, 이 코드는 하나의 A와 B에 계속해서 값을 덮어쓰기 때문에 실제로 24번째 줄에서 출력되는 건 가장 마지막 케이스에서 입력된 A와 B입니다. 답을 AA라는 배열에 저장해서 케이스마다 따로따로 저장하셨듯이, A와 B도 따로따로 저장해야 합니다.
그보다 더 좋은 방법은, 그냥 한 케이스 입력받고 그에 대한 답을 곧바로 출력해버리는 것입니다. 어딘가에 담아두었다가 나중에 몰아서 출력할 필요가 없습니다.
protect0 1년 전
System.out.println("Case #"+(i+1)+": " + A + " + " + B + " = "+ AA[i]);
이 문장을 다른 곳으로 안 옮기고 정상적으로 출력하고 싶은데
오류 내용 보니까 A 와 B가 지역 변수라서 안된다고 하는데 어떻게 해야 될까요?