이름과 나이를 입력받아 출력하는 코드를 아래와 같이 짰다고 했을 때,
package scanner.ex;
import java.util.Scanner;
public class ScannerEx6 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(true){
System.out.print("이름을 입력하세요 (종료를 입력하면 종료): ");
String myName = scanner.nextLine();
if(myName.equals("종료")){
System.out.println("프로그램을 종료합니다.");
break;
}
System.out.print("나이를 입력하세요: ");
int myAge = scanner.nextInt();
System.out.printf("입력한 이름: %s, 나이: %d\n", myName, myAge);
}
}
}
아래와 같이 결과를 출력하는 구문과 이름을 입력받는 구문이 붙어서 출력된다.

왜냐하면 아래와 같은 절차로 프로그램이 실행되기 때문이다.
50을 입력받는다치면 50을 입력한 후 엔터를 치면서 사용자 입력값으로 값+\n을 입력받게 된다.nextInt()메서드의 경우 \n을 제외하고 값만 받아오기 때문에 시스템(?)상으로는 \n이 남아있게 된다.\n을 nextLine()메서드가 한줄을 입력받은걸로 인식하고 바로 다음줄로 넘어가게 된다(myName의 값은 ""빈문자가 된다.)2번째 반복부터 이름을 받는 구문이 스킵된것처럼 보이고 바로 나이를 입력받는 것처럼 프로그램이 실행되는 것이다.
따라서 이를 해결하기 위해서는 나이를 입력받는 구문 아래에 nextLine()메서드를 추가해서 한 줄을 입력받게 하면 된다.
System.out.print("나이를 입력하세요: ");
int myAge = scanner.nextInt();
scanner.nextLine();
System.out.printf("입력한 이름: %s, 나이: %d\n", myName, myAge);