공부함/JAVA
[JAVA] scanner : 사용자에게 값 입력받기
솔헬레나
2024. 2. 27. 18:09
import
import java.util.Scanner;
객체 생성
Scanner sc = new Scanner(System.in);
입력받기
int inputValue = sc.nextInt(); // int형 입력
long inputValue = sc.nextLong(); // long형 입력
boolean inputValue = sc.nextBoolean(); // long형 입력
String inputValue = sc.next(); // 문자형 입력 ( 공백을 기준으로 한개의 단어 )
String inputValue = sc.nextLine(); // 문자형 입력 ( 줄바꿈을 기준으로 한 줄의 문장 )
String inputValue = sc.hasnext(); // 문자형 입력 ( 공백을 기준으로 한개의 단어 )
* 주의사항
.nextInt 일 때 문자열을 입력하면 에러가 발생한다.
따라서 사용자로부터 입력받을 값의 문자형을 지정해주고, 맞지 않는 경우에 대한 예외처리를 해 주어야 한다.
잘못된 값이 입력됨에 따라 발생할 수 있는 에러의 종류는 아래와 같다.
InputMismatchException
: 입력값이 정수 정규식과 일치하지 않거나 범위를 벗어난 경우
NoSuchElementException
: 더이상 입력받을 수 있는 값이 없는 경우 ( 입력받을 값을 1개만 설정 하였으나, 입력 종료시점을 지정하지 않아 계속 입력받으려고 할 때 발생하는 에러
IllegalStateException
: 유효하지 않은 상태 ( scanner 을 close 한 후 scanner을 사용하려고 한 경우
계속 입력받기
hasNext
: hasNext는 입력받은 값이 문자열인 동안 true를 반환한다. 즉 모든 값을 입력받을 수 있다.
: hasNextInt 인 경우 입력된 값이 숫자인 동안에만 ture를 반환한다. 문자열이 입력되면 입력 종료된다.
// 문자열 입력
Scanner sc = new Scanner(System.in);
do {
System.out.println("아무거나 입력해주세요.");
a = a + "/" + sc.next();
System.out.println(a);
} while (sc.hasNext());
// 숫자열 입력
Scanner sc = new Scanner(System.in);
do {
try {
a = sc.nextInt();
b = sc.nextInt();
if (0 >= a || b >= 10) {
throw new Exception();
}
} catch (Exception e) {
System.out.println("입력값이 유효하지 않음. 입력종료 [ a: " + a + "/b :" + b);
}
} while (sc.hasNextInt());
sc.close();
입력종료
: Scanner의 사용 종료, 이후 재 사용을 위하여 재선언 해야한다.
sc.close();