Java. Scanner 매서드 종류 정리

kimkim·2024년 8월 29일

Java. 공부내용정리

목록 보기
9/38

sc.자료형에 맞는 매서드() 종류

sc.nextLine();

  • 입력한 내용을 문자타입으로 받는다.(String 타입)
  • 예) String line = sc.nextLine();
public class Input{
	public static void main(String[] arge){
    	String line = sc.nextLine();
        System.out.println(line);
        
        // 입력 : 안녕 반가워.
        // 출력 : 안녕 반가워.
    }
}

sc.next();

  • 공백 앞에 있는 한 단어만 출력함(String 타입)
  • 예) String word = sc.next();
public class Input{
	public static void main(String[] arge){
    	String word = sc.next();
        System.out.println(word);
        
        // 입력 : 안녕 반가워.
        // 출력 : 안녕
    }
}

sc.nextDouble();

  • 실수를 입력 받는다.
  • 정수를 입력하더라도 결과는 실수로 입력된다.
  • 예) double d = sc.nextDouble();
public class Input{
	public static void main(String[] arge){
    	double d = sc.nextDouble();
        System.out.println(d);
        
        // 입력 : 3
        // 출력 : 3.0
        // 입력 : 5.2
        // 출력 : 5.2
    }
}

sc.nextBoolean()

  • true 또는 false를 입력받는다.
  • 예)boolean bool = sc.nextBoolean()
public class Input{
	public static void main(String[] arge){
    	boolean bool = sc.nextBoolean();
        System.out.println(bool);
        
       // 입력 : true
       // 출력 : true
    }
}

주의할 점

sc.nextInt();사용 후 sc.nextLine(); 사용

sc.nextLine() 쓰고 sc.nextInt()를 쓰는 것은 문제가 없지만
sc.nextInt()를 쓰고 sc.nextLine() 쓰면 오류가 남

예시

public class Input{
	public static void main(String[] arge){
    	//v1
        System.out.print("이름을 입력해주세요 : ");
        String name = sc.nextLine();
        System.out.print("나이를 입력해주세요 : ");
        int age = sc.nextInt();
        
        System.out,println("안녕하세요 "+age+"세 "+name+"입니다.");
        //이름을 입력해주세요 : (fsdf)
		//나이를 입력해주세요 : (12)
        // 안녕하세요 (12)세 (fsdf)입니다.
        
        //v2
        System.out.print("나이를 입력해주세요:");
        int age2 = sc.nextInt();
        System.out.print("이름을 입력해주세요 :");
        String name2 = sc.nextLine();

        System.out.println("안녕하세요 "+age2+"세 "+name2+"입니다.");
        
        // 나이를 입력해주세요 :(12)
        // 이름을 입력해주세요 :안녕하세요 12세 입니다.
        // String 입력값을 받지 않고 그냥 넘어가버림
    }
}

이유

nextInt()는 숫자 입력 후 줄바꿈 (엔터)를 바로 실행함
그래서 nextLine()이 입력값을 받지 못하고 줄바꿈 (엔터)로 실행되어 버림

해결 방법

숫자를 입력 받을 때 문자로 받고 숫자로 전환한다
: Integer.parseInt("123")
: 문자를 숫자로 전환한다.

sc에 적용하는 법
: int num = Integer.parseInt(sc.nextLine());

0개의 댓글