본문 바로가기

JAVA

Scanner 클래스

* next()와 nextLine()의 차이

 

next()

하나의 단어, 공백이 없는 문자 혹은 단어 출력

만약, 공백이 포함된다면 그 공백이 입력을 받는 다음 문장에 대한 입력으로 간주되기 때문에 주의가 필요

 

nextLine()

하나의 문장, 공백이 포함된 문장

 

package practice;

import java.util.Scanner; // Scanner 클래스를 사용하기 위해 추가

public class ex1 {

	public static void main(String[] args) {
		
		// Scanner 클래스의 객체를 생성
		// (System.in) -> 화면 입력을 받겠다
		Scanner scan = new Scanner(System.in); 
		
		System.out.print("정수 입력: ");
		int result1 = scan.nextInt();
		System.out.println("nextInt(): " + result1);
		
		System.out.print("실수 입력: ");
		double result2 = scan.nextDouble();
		System.out.println("nextDouble(): " + result2);
		
		System.out.print("문자 입력: ");
		char result3 = scan.next().charAt(0);
		System.out.println("next().charAt(0): " + result3);
		
		System.out.print("문자열 입력: ");
		String result4 = scan.next();
		System.out.println("next(): " + result4);
		
		
		// nextLine() 사용법
		// nextLine() -> 입력대기 상태에 있다가 입력을 마치고 엔터를 누르면 입력한 내용이 문자열로 반환
		// 따라서 다른 메서드들과 함께 사용하면 입력값을 받을 수 없는 에러 발생
		// 위의 next() 메서드를 실행하고 받은 엔터 값을 nextLine()에서 인식해버려서 에러가 발생하는 것임!!
		
		// 해결방법
		// 1. nextLine() 입력을 한번 더 받기
		// 2. 다른 메서드들과 함께 사용하는 경우, 첫 번째 줄에 사용
		// 3. 모든 입력에 nextLine() 메서드만 사용하기 -> 필요에 따라 형변환으로 해결하기
	
		String input = scan.nextLine(); // 해결을 위해 의미없는 입력을 한번 더 받자
		System.out.print("문자열 입력: ");
		String result5 = scan.nextLine();
		System.out.println("nextLine(): " + result5);

	}

}

 

 

 

'JAVA' 카테고리의 다른 글

switch문의 제약 조건  (0) 2020.09.29
Properties 클래스  (0) 2020.09.26
Java 기초  (0) 2020.09.12
equals()와 hashCode()  (0) 2020.09.12
6장  (0) 2020.08.21