위의 코드는 nextLine을 쓰고 있습니다. 메서드 이름 그대로, 한 줄을 통째로 입력받는 메서드입니다. 그러니 예제처럼
3 ABC
라는 입력이 있었다면, nextLine은 "3 ABC"를 그대로 반환합니다. 이걸 parseInt를 시도하면 정수가 아닌 문자열이 끼어있으므로 예외를 던지게 됩니다.
nextLine은 개행 문자를 기준으로 줄을 구분하므로 nextInt를 호출했을 때 엔터를 쳤다면 그 때의 개행 문자가 그대로 남아있고, 다음의 nextLine은 그 엔터 키를 읽고 거기가 줄의 끝이라고 판단해서 빈 문자열을 리턴합니다. null과 빈 문자열은 다르고, 이 경우는 null이 아닌 빈 문자열입니다.
ehfkswl 5년 전
제가 scanner을 이용하여 한개는 모든 변수를 string으로 받고 필요한 것들을 int로 바꿨더니 런타임 에러가 났고
다른 하나는 integer는 integer 그대로, string은 string그대로 변수를 받아 코드를 실행하여 통과하였습니다
두 코드가 어떤차이가 있을까요?
그리고 nextLine의 경우에는 enter(줄바꿈)을 그대로 input으로 받나요?
그러니까 nextint를 먼저 실행하여 integer를 input으로 받고나서 nextLine으로 string을 input으로 받고 싶은데 nextInt에서 숫자와 함께 enter키를 입력을 하면
string을 받기전에 null 값이 들어가는것 같는데 맞는건가요?
답변해주시면 감사하겠습니다 ~~