2016-04-05

16. java - 콘솔 입력(Scanner)

자바에서 사용자에게 입력을 받기 위해서는 scanner 클래스를 사용한다.


Scanner 클래스

 - 생성자에 전달되는 데이터를 추출하는 기능을 하기닫기 위한 클래스
    ... 키보드 입력 뿐 아니라 다양한 데이터에 이용!
 - java.util.Scanner 를 import 해야 사용가능

* 주요 메소드 
   : 입력받아야 하는 데이터의 타입에 따라 사용
   : 데이터 구분의 기준은 공백이다(스페이스 바, 엔터, 탭)

  - public boolean nextBoolean();

  - public byte nextByte();

  - public short nextShort();

  - public int nextInt();

  - public long nextLong();

  - public float nextFloat();

  - public double nextDouble();

  - public String nextLine();
  
ex)
import java.util.Scanner;
class ExScanner
{
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        System.out.println("a: " + a);
    
        String b = sc.nextLine();
        System.out.println("b: " + b);    
    }
}


결과

 ... 이상한 결과가 나옴, b는 입력의 기회도 없이 출력되버림 
why? 
 : a를 입력받을 때 데이터 구분을 위해 사용되었던 공백이 nextLine 메소드에 의해 읽혀져서 b에 들어갔기 때문! 

그래서 
import java.util.Scanner;
class ExScanner
{
    public static void main(String[] args)
    {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        System.out.println("a: " + a);
    
        sc.nextLine();  //공백을 읽어준다.
        String b = sc.nextLine();
        System.out.println("b: " + b);    
    }
}


b를 입력받기 전 nextLine() 메소드를 사용하여 공백을 제거해준다.

(결과)





올바른 실행 결과가 나옴!!



댓글 없음 :

댓글 쓰기