Java
[Java] Scanner(sc.nextInt() 와 Integer.parseInt(sc.nextLine())의 차이)
wwxs
2024. 10. 2. 11:26
의문점
자바 Scanner 관련 자료를 찾아보니 sc.nextInt();로 입력받아도 무방한 것을 굳이 Integer.parseInt(sc.nextLine()); 으로 문자로 받아 숫자로 변환시키는 것들이 보였다.
그래서 왜? 문자를 받고 숫자로 변화시키는지에 대해 궁금함이 들었다.
조사
nextInt();
- 장점
- 사용자가 입력한 값을 int타입으로 바로 변환되서 추가적인 변환작업이 필요가 없다
- 간단명료 하다.
- 단점
- 입력을 받을 때 nextInt();에 내재되어 있는 줄바꿈이 실행되므로 뒤에 nextLine();을 사용할 때 입력하지 않았는데 바로 실행되는 오류가 나타날 수 있다.
- Int 관련 자료형이 아니면 오류가 나타날 수 있다.
Integer.parseInt(sc.nextLine());
- 장점
- nextInt();에 내재되어 있는 줄바꿈이 실행문제를 해결 할 수 있다.
- 데이터 전체를 문자로 받고 이후에 필요한 형식으로 변환할 수 있으니 입력 오류를 더 잘 컨트롤 할 수 있다.
- 단점
- 입력된 데이터가 정수 형식이 아닐경우 오류가 발생할 수 있다.
- 문자를 정수로 변환하는 추가작업이 필요하다.
결론
단순한 정수 입력처리, 정확히 정수로만 입력이 된다면
: sc.nextInt()가 간단하고 직관적이여서 sc.nextInt()를 사용하는게 더 좋다
복잡한 입력 처리, 입력 형식에 유연성이 필요하거나, 입력 오류를 더 쉽게 관리하고 싶거나 nextInt() 다음 다른 문자열 입력을 처리해야 한다면,
: sc.nextLine()로 모든 입력을 먼저 문자열로 받고 나중에 필요한 형식으로 변환하는 것이 더 안전할 수 있다.