1. 다음을 사용하여 콘솔에서 읽기System.in
이전 수업에서는 화면에 정보를 표시하는 명령에 대해 배웠습니다. 이를 위해 우리는 System.out
개체와 그 print()
메서드 를 사용했습니다 println()
. 간단하고 편리합니다.
그러나 이미 짐작하셨겠지만 화면에 정보를 표시하는 것만으로는 충분하지 않습니다. 대부분의 프로그램의 목적은 사용자에게 유용한 작업을 수행하는 것입니다. 즉, 사용자가 키보드에서 데이터를 입력할 수 있어야 하는 경우가 매우 많습니다.
출력의 경우와 마찬가지로 데이터 입력을 위한 특수 개체도 있습니다 System.in
. 그러나 불행히도 우리에게는 원하는만큼 편리하지 않습니다. 한 번에 한 문자씩 키보드에서 데이터를 읽을 수 있습니다 .
이를 개선하기 위해 System.in
개체와 쌍을 이룰 때 필요한 모든 것을 제공하는 다른 클래스를 사용할 것입니다. 오랫동안 Java에는 모든 경우에 적합한 클래스가 있었습니다. 그리고 우리는 지금 그들 중 하나를 알게 될 것입니다.
2. Scanner
클래스
클래스 Scanner
(전체 이름: java.util.Scanner
)는 콘솔, 파일 및 인터넷과 같은 다양한 소스에서 데이터를 읽을 수 있습니다. 키보드에서 데이터를 읽으려면 System.in
개체를 데이터 소스로 사용할 인수로 전달해야 합니다. 그런 다음 스캐너 개체는 이를 사용하여 수행할 작업을 알아냅니다.
개체를 사용하여 키보드에서 읽는 것은 Scanner
다음과 같습니다.
암호 | 설명 |
---|---|
|
우리는 Scanner 객체를 생성합니다. 키보드에서 한 줄의 텍스트를읽습니다 . 키보드에서 숫자를 읽습니다 . |
쉬워보이지만 정말 간단하죠?
질문이 많으실 것 같은데 이제 답변을 드리겠습니다.
하지만 먼저 클래스를 사용하는 완전한 프로그램의 예를 보여드리겠습니다 Scanner
.
import java.util.Scanner;
public class Solution {
public static void main(String[] args)
{
Scanner console = new Scanner(System.in);
String name = console.nextLine();
int age = console.nextInt();
System.out.println("Name: " + name);
System.out.println("Age: " + age);
}
}
3. Scanner
객체 생성
첫 번째 질문은 이 줄이 무엇입니까 Scanner console = new Scanner (System.in);
?
이 줄은 혼란스러울 수 있지만 항상 비슷한 내용을 볼 수 있습니다. 그래서 우리는 여기서 무슨 일이 일어나고 있는지 설명하는 것이 중요하다고 생각합니다.
일반적으로 텍스트로 변수를 만드는 방법을 기억하십시오.
String str = "text";
먼저 변수의 타입( )을 쓰고 String
이름( str
)을 쓰고 마지막으로 등호 뒤에 값을 씁니다.
우리의 어리둥절한 줄은 실제로 동일합니다.
Scanner console = new Scanner(System.in);
Scanner
변수 선언 및 초기화
등호 왼쪽에 있는 모든 항목은 console
형식이 인 변수의 선언입니다 Scanner
. s
대신 또는 scanner
또는 이라고 부를 수 있습니다 keyboard
. 그러면 코드는 다음과 같습니다.
Scanner s = new Scanner(System.in);
String name = s.nextLine();
int age = s.nextInt();
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
int age = scanner.nextInt();
Scanner keyboard = new Scanner(System.in);
String name = keyboard.nextLine();
int age = keyboard.nextInt();
나는 그것이 모든 것을 훨씬 더 명확하게 만든다고 생각합니다.
그러나 등호 오른쪽에 있는 코드는 조금 더 복잡합니다. 나는 지금 언급하고 있습니다 new Scanner(System.in);
즉, 여기에서도 초자연적인 일이 일어나지 않습니다.
이 코드에서 우리는 Java 머신에게 new
유형이 인 새 객체(키워드) 를 생성하고 객체를 새로 생성된 객체의 데이터 소스로 Scanner
전달하도록 지시합니다 .System.in
Scanner
이 전체 줄을 실행한 후 프로그램이 키보드에서 데이터를 읽는 데 사용할 Scanner
변수를 갖게 됩니다 .console
4. 방법 목록
위의 예에서 Scanner
console
변수는 개체에 대한 참조를 저장합니다 Scanner
.
변수가 참조하는 개체에서 메서드를 호출하려면 변수 이름 다음에 마침표를 쓰고 그 뒤에 메서드 이름과 인수를 씁니다. 명령의 일반적인 모양은 다음과 같습니다.
variable.method(arguments);
예:
System.out.println("Hello");
System.out.println(1);
함수에 인수를 전달할 계획이 없다면 빈 괄호만 작성하면 됩니다.
variable.method();
예:
System.out.println();
5. 콘솔 입력
개체가 있으면 Scanner
키보드에서 데이터를 쉽게 가져올 수 있습니다.
키보드에서 한 줄을 읽으려면 다음 명령이 필요합니다.
String str = console.nextLine();
프로그램 실행이 이 줄에 도달하면 일시 중지하고 사용자가 데이터를 입력하고 Enter 키를 누를 때까지 기다립니다. 그러면 사용자가 입력한 모든 것이 변수에 저장됩니다 str
.
키보드에서 숫자를 읽으 려면 다음 명령이 필요합니다.
int number = console.nextInt();
여기 있는 모든 것은 이전 명령과 같습니다. 프로그램 실행이 이 줄에 도달하면 일시 중지하고 사용자가 데이터를 입력하고 Enter 키를 누를 때까지 기다립니다. 그 후 사용자가 입력한 모든 것은 숫자로 변환되어 number
변수에 저장됩니다.
사용자가 정수로 변환할 수 없는 데이터를 입력한 경우 프로그램은 오류를 생성하고 종료합니다.
키보드에서 분수를 읽으려면 다음 명령이 필요합니다.
double number = console.nextDouble();
이 문은 메서드가 있는 문과 매우 유사하지만 nextInt()
입력된 데이터를 숫자로 변환할 수 있는지 확인합니다 double
.
키보드에서 두 개의 숫자를 읽고 합계를 화면에 표시하는 프로그램의 예:
import java.util.Scanner;
public class Solution {
public static void main(String[] args)
{
Scanner console = new Scanner(System.in);
int a = console.nextInt();
int b = console.nextInt();
System.out.println(a + b);
}
}
사용자는 공백으로 구분하여 한 줄에 여러 숫자를 입력할 수 있습니다. 클래스의 메서드는 Scanner
이를 처리하는 방법을 알고 있습니다. 즉, 프로그램은 사용자가 를 누른 후에만 숫자를 읽습니다 Enter
.
6. Scanner
수업 의 기타 방법
그건 그렇고, 위의 방법이 Scanner
클래스가 제공해야 하는 전부는 아닙니다. 메서드의 전체 목록은 다음과 같습니다.
방법 | 설명 |
---|---|
|
데이터를 읽어서 변환byte |
|
데이터를 읽어서 변환short |
|
데이터를 읽어서 변환int |
|
데이터를 읽어서 변환long |
|
데이터를 읽어서 변환float |
|
데이터를 읽어서 변환double |
|
데이터를 읽어서 변환boolean |
|
하나의 "토큰"을 읽습니다. 토큰은 공백 또는 Enter 키 누름으로 구분됩니다. |
|
전체 줄을 읽습니다. |
실제로 가져오지 않고 입력에서 다음 토큰을 확인할 수 있는 메서드도 있습니다(읽는 데 사용할 메서드를 알기 위해).
방법 | 설명 |
---|---|
|
가 있습니까 byte ? 입력을 ?로 변환할 수 있습니까 byte ? |
|
가 있습니까 short ? 입력을 ?로 변환할 수 있습니까 short ? |
|
가 있습니까 int ? 입력을 ?로 변환할 수 있습니까 int ? |
|
가 있습니까 long ? 입력을 ?로 변환할 수 있습니까 long ? |
|
가 있습니까 float ? 입력을 ?로 변환할 수 있습니까 float ? |
|
가 있습니까 double ? 입력을 ?로 변환할 수 있습니까 double ? |
|
가 있습니까 boolean ? 입력을 ?로 변환할 수 있습니까 boolean ? |
|
다른 토큰이 있습니까? |
|
다른 라인이 있나요? |
7. 문자열에서 데이터 읽기
Scanner
이전에 클래스가 다양한 소스에서 데이터를 읽을 수 있다고 언급했습니다 . 이러한 소스 중 하나는 텍스트 문자열 입니다 .
다음과 같이 보입니다.
String str = "text";
Scanner scanner = new Scanner(str);
개체를 만들 때 개체 대신 Scanner
문자열을 전달합니다 . 이제 개체는 문자열에서 데이터를 읽습니다. 예:str
System.in
scanner
프로그램 코드: | 설명: |
---|---|
|
// a == 10;
// b == 20;
화면 출력은 다음과 같습니다. |
GO TO FULL VERSION