logo

Java의 스캐너 클래스

Java에서 Scanner는 int, double 등과 같은 기본 유형과 문자열의 입력을 얻는 데 사용되는 java.util 패키지의 클래스입니다.

Java에서 Scanner 클래스를 사용하는 것은 Java 프로그램에서 입력을 읽는 가장 쉬운 방법이지만 경쟁 프로그래밍과 같이 시간이 제한된 시나리오의 입력 방법을 원하는 경우에는 그리 효율적이지 않습니다.

Java 스캐너 입력 유형

Scanner 클래스는 Java에서 표준 입력 스트림을 가져오는 데 도움이 됩니다. 따라서 스트림에서 데이터를 추출하려면 몇 가지 방법이 필요합니다. 데이터 추출에 사용되는 방법은 다음과 같습니다.



방법

설명

nextBoolean()

부울 값을 읽는 데 사용됩니다.

다음바이트()

Byte 값을 읽는 데 사용됩니다.

다음더블()

문자열 비교
Double 값을 읽는 데 사용됩니다.

다음플로트()

Float 값을 읽는 데 사용됩니다.

nextInt()

Int 값을 읽는 데 사용됩니다.

다음라인()

라인 값을 읽는 데 사용됩니다.

다음긴()

Long 값을 읽는 데 사용됩니다.

다음짧은()

Short 값을 읽는 데 사용됩니다.

다양한 데이터 유형의 데이터를 읽는 코드 조각을 살펴보겠습니다.

Java 스캐너 클래스의 예

예시 1:

자바




// Java program to read data of various types> // using Scanner class.> import> java.util.Scanner;> // Driver Class> public> class> ScannerDemo1 {> >// main function> >public> static> void> main(String[] args)> >{> >// Declare the object and initialize with> >// predefined standard input object> >Scanner sc =>new> Scanner(System.in);> >// String input> >String name = sc.nextLine();> >// Character input> >char> gender = sc.next().charAt(>0>);> >// Numerical data input> >// byte, short and float can be read> >// using similar-named functions.> >int> age = sc.nextInt();> >long> mobileNo = sc.nextLong();> >double> cgpa = sc.nextDouble();> >// Print the values to check if the input was> >// correctly obtained.> >System.out.println(>'Name: '> + name);> >System.out.println(>'Gender: '> + gender);> >System.out.println(>'Age: '> + age);> >System.out.println(>'Mobile Number: '> + mobileNo);> >System.out.println(>'CGPA: '> + cgpa);> >}> }>

>

>

입력

C 언어의 문자열 배열
Geek F 40 9876543210 9.9>

산출

Name: Geek Gender: F Age: 40 Mobile Number: 9876543210 CGPA: 9.9>

때로는 우리가 읽는 다음 값이 특정 유형인지 또는 입력이 종료되었는지(EOF 마커 발견) 확인해야 합니다.

그런 다음 hasNextXYZ() 함수를 사용하여 스캐너의 입력이 원하는 유형인지 확인합니다. 여기서 XYZ는 우리가 관심 있는 유형입니다. 이 함수는 스캐너에 해당 유형의 토큰이 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다. 예를 들어, 아래 코드에서는 hasNextInt()를 사용했습니다. 문자열을 확인하려면 hasNextLine()을 사용합니다. 마찬가지로 단일 문자를 확인하려면 hasNext().charAt(0)을 사용합니다.

예 2:

콘솔에서 일부 숫자를 읽고 그 평균을 인쇄하는 코드 조각을 살펴보겠습니다.

자바

자바스크립트 온로드




// Java program to read some values using Scanner> // class and print their mean.> import> java.util.Scanner;> public> class> ScannerDemo2 {> >public> static> void> main(String[] args)> >{> >// Declare an object and initialize with> >// predefined standard input object> >Scanner sc =>new> Scanner(System.in);> >// Initialize sum and count of input elements> >int> sum =>0>, count =>0>;> >// Check if an int value is available> >while> (sc.hasNextInt()) {> >// Read an int value> >int> num = sc.nextInt();> >sum += num;> >count++;> >}> >if> (count>>0>) {> >int> mean = sum / count;> >System.out.println(>'Mean: '> + mean);> >}> >else> {> >System.out.println(> >'No integers were input. Mean cannot be calculated.'>);> >}> >}> }>

>

>

입력

1 2 3 4 5>

산출

Mean: 3>

Java 스캐너 클래스에 대한 중요한 사항

  • Scanner 클래스의 개체를 생성하려면 일반적으로 표준 입력 스트림을 나타내는 미리 정의된 개체 System.in을 전달합니다. 파일에서 입력을 읽으려면 File 클래스의 객체를 전달할 수 있습니다.
  • 특정 데이터 유형 XYZ의 숫자 값을 읽으려면 nextXYZ() 함수를 사용합니다. 예를 들어 short 유형의 값을 읽으려면 nextShort()를 사용할 수 있습니다.
  • 문자열을 읽으려면 nextLine()을 사용합니다.
  • 단일 문자를 읽으려면 next().charAt(0)을 사용합니다. next() 함수는 입력의 다음 토큰/단어를 문자열로 반환하고 charAt(0) 함수는 해당 문자열의 첫 번째 문자를 반환합니다.
  • Scanner 클래스는 전체 줄을 읽고 해당 줄을 토큰으로 나눕니다. 토큰은 Java 컴파일러에 어떤 의미를 갖는 작은 요소입니다. 예를 들어, How are you라는 입력 문자열이 있다고 가정합니다.
    이 경우 스캐너 개체는 전체 줄을 읽고 문자열을 How, are 및 you라는 토큰으로 나눕니다. 그런 다음 객체는 각 토큰을 반복하고 다양한 방법을 사용하여 각 토큰을 읽습니다.