자바스캐너 클래스
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/를 참조하세요.