ingyo   2년 전

처음에 아래와 같이 적었는데 오류가 뜨고, String으로 받아서 charAt 한것을 (int) casting하니까 잘 되더라구요.

결국 두개는 같은 information을 담고있는것이고 단지 형이 int면 숫자로, 형이 char이면 글자로 나타난다고 이해가 됬는데, 아래와 같이 nextInt()로 아예 받아버리는것은 왜 오류가 나는지 궁금합니다.

감사합니다!!

gallopsys   2년 전

결론부터 말하면 자료형 문제 때문에 불가능한 것입니다. Java reference의 "Class Scanner" 항목에 있는 nextInt 함수를 보시면 다음과 같은 내용이 서술되어 있는데요.

public int nextInt(int radix)

Scans the next token of the input as an int. This method will throw InputMismatchException if the next token cannot be translated into a valid int value as described below. If the translation is successful, the scanner advances past the input that matched.


즉, int 이외의 다른 값(혹은 int 범위를 벗어난 값)이 주어지면 InputMismatchException을 throws하도록 설계되어 있기 때문입니다.

gallopsys   2년 전

참고로 parameters로 넘어가는 int radix부분은 무시하셔도 상관 없습니다. 추가로 InputMismatchException은 다음과 같은 경우에 발생한다고 서술되어 있습니다.


InputMismatchException - if the next token does not match the Integer regular expression, or is out of range.

ingyo   2년 전

"translated"라는 말이 모호한거같지만 대략 이해가 되는거같아요!

감사합니다.

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