June

<자바기초> next(), nextLine() 차이점

자바를 공부하면서 코딩을 하며 input을 받는 상황에서 한줄씩 밀리는 현상을 발견했습니다.

에러가 난 상황

Scanner s = new Scanner(System.in);

System.out.println("값을 입력하세요.");
for (int i=0; i<3; i++) {
    System.out.println("첫 번째");
    String a = s.nextLine();
    int b = s.nextInt();
    String c = s.nextLine();    // c에 값을 입력 후, 다시 a에 nextLine();을 넣기 전에, a에 \n이 들어가버림.
}

뭔가 잘못했나... 생각을 하다 구글링으로 next()와 nextLine()의 차이점으로 발생한 문제라는 것을 알았습니다.

next()

Scanner s = new Scanner("\n\ntest\nhoho\n");

while (s.hasNext()) {
    System.out.println("출력: " + s.next());
}
// <결과>
// 출력: test
// 출력: hoho

※ next()는 개행문자, 공백은 무시하고 문자를 입력받습니다.

nextLine()

// nextLine()
Scanner s = new Scanner("\n\ntest\nhoho\n");

while (s.hasNext()) {
    System.out.println("출력: " + s.nextLine());
}
// <결과>
// 출력:
// 출력:
// 출력: test
// 출력:
// 출력: hoho
// 출력:

※ nextLine()은 한 줄 단위로 입력받기 때문에 개행문자도 한 줄로 인식합니다.


기초가 중요함을 느낄 수 있는 포스팅이었습니다. php와 다른 점들이 헷갈릴 수 있으니 차근차근 공부하며 포스팅하겠습니다.