[프로그래밍언어][Java(자바)] (Class) Scanner - 입력, 입력값이 0이면 종료, 입력값이 없으면 종료, 숫자 입력 받은 후 문자열 입력 받기

728x90

 

Class Scanner

 

Constructor Description
Scanner(InputStream source) 특정 입력 스트림에서 스캔한 값을 생성하는 새 스캐너 생성
Scanner(File source) 특정 파일에서 스캔한 값을 생성하는 새 스캐너 생성
Scanner(Path source) 특정 파일에서 스캔한 값을 생성하는 새 스캐너 생성

 

Modifier and Type Method Description
String next() 다음 토큰을 반환
( 기본적으로 공백 문자 ‘ ’ 를 기준으로 삼음 )
String nextLine() 현재 줄을 지나 다음 토큰 반환
( 개행문자 '\n' 를 기준으로 삼음
- 스캔 시에는 개행 문자 포함,
  반환 시 개행 문자 전까지 )
int
( or long, short, double, float, ... )
nextInt()
( or Long, Short, Double, Float, ... )
다음 토큰을 int로 스캔 후 반환
boolean hasNext() 다음 토큰이 있으면 true 반환
boolean hasNext(String pattern) 다음 토큰이 지정한 패턴과 일치하면 true 반환
void close() 이 스캐너를 닫음

 

( https://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html )

 

 

Class PrintStream

 

Modifier and Type Method Description
void print(String x)
( or Object, int, long, char, double, float, booelan, ... )
문자열 출력
void println(String x)
( or Object, int, long, char, double, float, booelan, ... )
문자열 출력하고 현재 행 종료
void println() 현재 행 종료 (줄 구분자 문자열 작성)
PrintStream printf(String format, Object... args) 지정한 형식의 문자열 출력

 

( https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html )

 

 

▶   입력받은 토큰 값이 0 이면 종료

Scanner sc = new Scanner(System.in);
int n;
// [way 1]
while (true) {
	n = sc.nextInt();
	if (n == 0) break;
	...
}
// [way 2]	
while ((n = sc.nextInt()) != 0) {
	...
}
// [way 3]	
while (!sc.hasNext("0")) {
	n = sc.nextInt();
	...
}
sc.close();

 

▶   입력받은 토큰 값이 없으면 종료

Scanner sc = new Scanner(System.in);
int n;
// [way 1]
while (true) {
	try {
		n = sc.nextInt();
		...
	}
	catch (Exception e) {
		break;
	}
}	
// [way 2] -- EOF ( = End of File )
while (sc.hasNext()) {
	n = sc.nextInt();
	...
}
sc.close();

 

▶   숫자 입력 받은 후 문자열 입력 받기

Scanner sc = new Scanner(System.in);

int n; String s;

/* 입력값 */
// 25
// 김배추
/**********/
// => 25\n김배추\n

// [way 1]
n = sc.nextInt();	// 25
s = sc.next();		// "김배추"

// [way 2]
n = sc.nextInt();	// 25
sc.nextLine();		// "\n" -> ""
s = sc.nextLine();	// "김배추\n" -> "김배추"

// [way 3]
n = Integer.valueOf(sc.nextLine());	// "25\n" -> 25
s = sc.nextLine();						// "김배추\n" -> "김배추"

System.out.println(n + "\n" + s);

sc.close();

 

 

반응형