JAVA

JAVA: Scanner

서상우 2024. 7. 2. 15:48
728x90
반응형

1. scanner.nextInt() 사용: 

  • 기능: 이 코드는 nextInt()를 사용하여 입력에서 정수를 직접 읽어옵니다.
  • 동작: 사용자가 정수를 입력하면 잘 작동합니다. 그러나 입력이 유효한 정수가 아닐 경우(예: 문자나 특수 문자가 포함된 경우) InputMismatchException을 발생시킵니다.
  • 라인 읽기: nextInt()는 정수 부분만 읽고 입력 버퍼에 개행 문자를 남기므로, 이후 입력 작업이 전체 라인을 기대하는 경우 문제가 발생할 수 있습니다.
int num = scanner.nextInt();    // 정수를 직접 입력받아서 num 변수에 저장
System.out.println(num);

 

2. scanner.nextLine() 및 Integer.parseInt() 사용:

  • 기능: 이 코드는 nextLine()을 사용하여 입력에서 전체 라인을 문자열로 읽고, Integer.parseInt()를 사용하여 문자열을 정수로 변환하려고 시도합니다.
  • 동작: 입력이 문자열로 표현된 유효한 정수일 경우 잘 작동합니다. 입력이 유효한 정수 문자열이 아닐 경우 NumberFormatException을 발생시킵니다.
  • 라인 읽기: nextLine()은 개행 문자를 포함한 전체 라인을 읽으므로 입력 버퍼가 비워지고 이후 입력 작업이 새로 시작됩니다.
String input = scanner.nextLine();
int num = Integer.parseInt(input);
System.out.println(num);

 

차이점 요약:

  1. 오류 처리:
    • nextInt(): 비정수 입력 시 InputMismatchException 발생.
    • nextLine() + Integer.parseInt(): 비정수 문자열 입력 시 NumberFormatException 발생.
  2. 입력 처리:
    • nextInt(): 정수 부분만 읽고 버퍼에 개행 문자를 남김.
    • nextLine(): 개행 문자를 포함한 전체 라인을 읽어 버퍼를 비움.
  3. 사용 사례:
    • nextInt()는 입력이 정수일 것으로 보장될 때 유용합니다.
    • nextLine() + Integer.parseInt()는 전체 라인의 입력을 읽고 처리할 때, 입력 오류를 더 유연하게 처리하고 버퍼를 비워서 이후 입력 작업이 원활하게 이루어지도록 할 때 유용합니다.
728x90
반응형