자바스캐너 클래스


java.util.Scanner는 Java5의 새로운 기능으로 Scanner 클래스를 통해 사용자 입력을 얻을 수 있습니다.

다음은 Scanner 객체를 생성하기 위한 기본 구문입니다.

 Scanner s = new Scanner(System.in);

다음으로 Scanner 클래스의 next() 및 nextLine() 메소드를 통해 가장 간단한 데이터 입력을 보여주고 입력 문자열을 얻습니다. 읽기 전에 일반적으로 필요한 것이 있습니다. hasNext 및 haxNextLine을 사용하여 아직 입력 데이터가 있는지 확인합니다.


다음 방법을 사용합니다.

import java.util.Scanner; 

public class ScannerDemo {  
    public static void main(String[] args) {  
        Scanner scan = new Scanner(System.in); 
		// 从键盘接收数据  

		//next方式接收字符串
        System.out.println("next方式接收:");
        // 判断是否还有输入
        if(scan.hasNext()){   
        	String str1 = scan.next();
        	System.out.println("输入的数据为:"+str1);  
        }  

    }  
}

위 프로그램을 실행한 결과는 다음과 같습니다.

$ javac ScannerDemo.java
$ java ScannerDemo
next方式接收:
php com
输入的数据为:php

com 문자열이 출력되지 않는 것을 확인할 수 있습니다. nextLine을 살펴보자.

nextLine 메소드 사용:


import java.util.Scanner; 

public class ScannerDemo {  
    public static void main(String[] args) {  
        Scanner scan = new Scanner(System.in); 
		// 从键盘接收数据  

		//nextLine方式接收字符串
        System.out.println("nextLine方式接收:");
        // 判断是否还有输入
        if(scan.hasNextLine()){   
        	String str2 = scan.nextLine();
        	System.out.println("输入的数据为:"+str2);  
        }  

    }  
}

위 프로그램을 실행한 결과는 다음과 같습니다.

$ javac ScannerDemo.java
$ java ScannerDemo
nextLine方式接收:
php com
输入的数据为:php com

com 문자열 출력을 볼 수 있습니다.

next() 및 nextLine() 차이점

next():

  • 1. 입력을 종료하기 전에 유효한 문자를 읽어야 합니다.

  • 2. next() 메소드는 유효한 문자를 입력하기 전에 발견된 공백을 자동으로 제거합니다.

  • 3. 유효한 문자를 입력한 후에만 그 뒤에 입력된 공백을 구분 기호 또는 종결 기호로 사용하세요.

  • next()는 공백이 있는 문자열을 가져올 수 없습니다.

nextLine():

  • 1. Enter는 끝 문자입니다. 이는 nextLine() 메서드가 입력하기 전의 모든 문자를 반환한다는 의미입니다.

  • 2. 공백을 얻을 수 있습니다.

int 또는 float 유형의 데이터를 입력하려는 경우 Scanner 클래스에서도 지원되지만 입력하기 전에 hasNextXxx() 메서드를 사용하여 확인하고 nextXxx()를 사용하여 읽는 것이 가장 좋습니다.

import java.util.Scanner;  

public class ScannerDemo {  
    public static void main(String[] args) {  
        Scanner scan = new Scanner(System.in);  
		// 从键盘接收数据  
        int i = 0 ;  
        float f = 0.0f ;  
        System.out.print("输入整数:");  
        if(scan.hasNextInt()){                 
			// 判断输入的是否是整数  
            i = scan.nextInt() ;                
			// 接收整数  
            System.out.println("整数数据:" + i) ;  
        }else{                                 
			// 输入错误的信息  
            System.out.println("输入的不是整数!") ;  
        }  
        System.out.print("输入小数:");  
        if(scan.hasNextFloat()){              
			// 判断输入的是否是小数  
            f = scan.nextFloat() ;             
			// 接收小数  
            System.out.println("小数数据:" + f) ;  
        }else{                                
			// 输入错误的信息  
            System.out.println("输入的不是小数!") ;  
        }  
    }  
}

위를 실행합니다. 프로그램의 출력 결과는 다음과 같습니다.

$ javac ScannerDemo.java
$ java ScannerDemo
输入整数:12
整数数据:12
输入小数:1.2
小数数据:1.2

다음 예에서는 여러 숫자를 입력하고 해당 숫자의 합계와 평균을 구할 수 있습니다. Enter를 눌러 숫자가 아닌 값을 입력하면 입력과 출력이 종료됩니다. 실행 결과:

import java.util.Scanner; 

class ScannerDemo   
{  
    public static void main(String[] args)   
    {  
        Scanner scan = new Scanner(System.in);  
  
        double sum = 0;  
        int m = 0;  
  
        while(scan.hasNextDouble())  
        {  
            double x = scan.nextDouble();  
            m = m + 1;  
            sum = sum + x;  
        }  
  
        System.out.println(m+"个数的和为"+sum);  
        System.out.println(m+"个数的平均值是"+(sum/m));  
    }  
}

Execution 위 프로그램의 출력 결과는 다음과 같습니다.

$ javac ScannerDemo.java
$ java ScannerDemo
12
23
15
21.4
end
4个数的和为71.4
4个数的平均值是17.85

자세한 내용은 API 문서: http://www.php.cn/manual/jdk1.6/를 참조하세요.