2011. 5. 10. 13:49

자바(Java)에서 콘솔입력을 지원하는 `Scanner 클래스`

처음 자바(Java)를 공부했을 때 C언어에서 scanf()함수를 사용하는 것과 같이 콘솔이나 커맨드 프롬프트에서 사용자가 입력하는 값을 어떻게 받는지 궁금했다. 그래서 방법을 찾아봤는데 꼭 필요한 것이지만 왠걸.. 방법을 찾기가 쉽지 않았다. 이래저래 알아낸 것이 IOException을 import해서 System.in을 이용한 read()와 readLine()이었다.

그러나 이것은 문자와 문자열을 입력받는 것이고, 이렇게 받은 것을 parseInt() 등으로 변환하는 식의 번거로운 절차를 거쳐야 했기에 '뭐, 이런식으로..?'라고 생각을 했던 기억이 있다. 하지만 이제는 자바에서도 사용자가 입력하는 다양한 형태의 데이타 입력을 받기 위한 'Scanner 클래스'가 있다. util.*나 util.Scanner를 import하고서 System.in으로 인스턴스를 만든 후 '객체.nextInt()’로 정수값을 받는다. 실수값을 받는다면 nextFloat()로 해주면 된다. 그 외, 문자나 문자열을 입력받는 nextByte(), nextLine() 등을 비롯, 다양한 데이타를 받는 메소드들이 있다.

  1: import java.io.* ;  
  2: import java.util.Scanner ;
  3: import java.util.* ;
  4: 
  5: public class ScanInput {
  6:   public static void main(String[] args) {
  7:     Scanner scan = new Scanner(System.in) ;
  8:     
  9:     int numInt ;
 10:     float numFloat, sum ;
 11:      
 12:     System.out.print("정수형과 실수형 숫자 2개를 입력하세요 : ") ;
 13:      
 14:     numInt = scan.nextInt();
 15:     numFloat = scan.nextFloat();
 16:      
 17:     sum = numInt + numFloat ;
 18:      
 19:     //같은 출력 결과
 20:     System.out.printf("%d + %f = %f\n",numInt, numFloat, sum) ;
 21:     System.out.println(numInt + " + " + numFloat + " = " + sum) ;
 22:   }
 23: 
 24: }