안녕하세요~ 

이번 시간에는 Scanner 클래스에 존재하는 메소드들에 대해 알아보려고 하는데요.

활용코드 한번 보시죠!

Scanner 클래스를 사용하여 입력받을 수 있는 코드

package study;

import java.util.Scanner;

public class Day15 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.print("이름 > ");
		String name = sc.next();
		System.out.print("나이 > ");
		int age = sc.nextInt();
		System.out.print("번호 > ");
		String phone = sc.next();
		System.out.print("주소 > ");
		String addr = sc.nextLine();
		
		System.out.println("==================================");
		System.out.println("이름\t나이\t번호\t\t주소");
		System.out.printf("%s\t%d\t%s\t%s",name,age,phone,addr);
	}
}

 

Scanner 클래스에 존재하는 next(), nextInt(), nextLine() 메소드를 활용해 이름,나이,번호,주소를 입력받고자 합니다.


 코드에는 오류 문구가 없는데 실행했을 때 주소 입력을 하지도 않았는데 넘어가고 종료되네요.

어떤 순서로 실행되는지 한번 볼까요?


오늘의 핵심 키워드
  • next() 메소드는 문자를 입력할 때 사용한다. 단, 공백은 입력할 수 없어 띄어쓰기는 불가능하다.
  • nextInt() 메소드는 숫자를 입력할 때 사용한다. 마찬가지로 띄어쓰기는 불가능하다.
  • nextLine() 메소드는 문자+공백을 입력할 때 사용한다. 띄어쓰기를 입력할 수 있어 유용하지만 다른 메소드들과 같이 사용할 때 먼저 상황에서 공백이 남아있다면 입력을 하지 않아도 자동으로 넘어가게 된다.

1. 주소를 입력받는 nextLine() 

2. 그 전에 있는 번호 입력을 위한 next() 에서 번호를 입력하고 엔터를 누릅니다. 

3. 이 엔터도 띄어쓰기 한칸 되어있는 공백으로 인식해서 넘어가게 됩니다.

📌 그래서 이를 해결하기 위해 번호 입력하는 next() 뒤에 nextLine()을 한번 입력해서 공백을 제거해줍니다.


 

 

next() 뒤에 nextLine()을 작성하여 공백을 제거했더니 정상적으로 주소가 입력되어 출력되었습니다.


최종 완성 코드

package study;

import java.util.Scanner;

public class Day15 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.print("이름 > ");
		String name = sc.next();
		System.out.print("나이 > ");
		int age = sc.nextInt();
		System.out.print("번호 > ");
		String phone = sc.next();sc.nextLine();
		System.out.print("주소 > ");
		String addr = sc.nextLine();
		
		System.out.println("==================================");
		System.out.println("이름\t나이\t번호\t\t주소");
		System.out.printf("%s\t%d\t%s\t%s",name,age,phone,addr);
	}
}

 

꼭 봐야되는 마무리 꿀팁!
  •  입력 중에 띄어쓰기와 함께 저장할 때는 nextLine() 사용하기!
  • nextLine() 메소드를 next(), nextInt()와 섞어서 사용할 때는 앞에 nextLine()으로 공백 제거하기!

▲ 영상으로 한번 더 복습하세요 :)