khj000217   2년 전

8진수를 10진수로 바꾸고 다시 2진수로 바꿔서 풀었습니다.

InputMismatch로 Scanner 예외 처리도 해주고 0,1을 넣어도 잘 돌아갑니다.

어디서 오류가 나는건지 잘 모르겠어서 질문드립니다!

djm03178   2년 전

코드에 문제가 없는데 런타임 에러가 뜰 이유는 없습니다. 모든 입력에 대해 정답을 출력해야 하는데, 그걸 단순히 try catch로 예외처리하면 일부 입력에 대해 프로그램이 내가 처리 못하겠다고 그냥 아무 답을 출력하지 않고 종료시키고 있는 것입니다.

주어지는 수는 길이가 333334 이하입니다. 즉, 77777777777777777777777777777777777777777777777777과 같이 길이가 50인 입력도 들어올 수 있는데 이는 int로 담을 수 없는 크기입니다. 그래서 Scanner.nextInt가 "나는 분명 int를 입력받으라고(input) 지시받았는데 int에 해당하지 않는(mismatch) 입력이 들어왔네?" 하고 InputMismatch를 띄운 것입니다. 런타임 에러 종류의 이름에는 대체로 매우 직설적인 의미가 있습니다. 그냥 넘기지 말고 디버깅을 위한 힌트로 적극 활용하세요.

khj000217   2년 전

감사합니다! int로 받는방법말고 다른 방법을 찾아야겠습니다.

댓글을 작성하려면 로그인해야 합니다.