자바에서 사용자에게 입력을 받기 위해서는 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() 메소드를 사용하여 공백을 제거해준다.
(결과)
올바른 실행 결과가 나옴!!