[java] Java로 사용자 입력을 얻는 방법?

계산기를 만들려고했지만 사용자 입력을 얻는 방법을 모르기 때문에 계산기를 작동시킬 수 없습니다 .

Java로 사용자 입력을 받으려면 어떻게해야합니까?



답변

요구 사항에 따라 다음 옵션 중 하나를 사용할 수 있습니다.

Scanner 수업

import java.util.Scanner;
Scanner scan = new Scanner(System.in);
String s = scan.next();
int i = scan.nextInt();

BufferedReaderInputStreamReader클래스

import java.io.BufferedReader;
import java.io.InputStreamReader;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int i = Integer.parseInt(s);

DataInputStream 수업

import java.io.DataInputStream;
DataInputStream dis = new DataInputStream(System.in);
int i = dis.readInt();

클래스 의 readLine메소드는 사용되지 않습니다 . 문자열 값을 얻으려면 BufferedReader와 함께 이전 솔루션을 사용해야합니다DataInputStream


Console 수업

import java.io.Console;
Console console = System.console();
String s = console.readLine();
int i = Integer.parseInt(console.readLine());

분명히이 방법은 일부 IDE에서 제대로 작동하지 않습니다.


답변

가장 간단한 방법 중 하나는 Scanner다음과 같이 객체 를 사용하는 것입니다.

import java.util.Scanner;

Scanner reader = new Scanner(System.in);  // Reading from System.in
System.out.println("Enter a number: ");
int n = reader.nextInt(); // Scans the next token of the input as an int.
//once finished
reader.close();


답변

스캐너 클래스 또는 콘솔 클래스를 사용할 수 있습니다

Console console = System.console();
String input = console.readLine("Enter input:");


답변

을 사용하여 사용자 입력을 얻을 수 있습니다 BufferedReader.

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String accStr;

System.out.println("Enter your Account number: ");
accStr = br.readLine();

String값을 저장 accStr하므로 intusing 으로 구문 분석해야합니다 Integer.parseInt.

int accInt = Integer.parseInt(accStr);


답변

키보드 입력을 얻는 방법은 다음과 같습니다.

Scanner scanner = new Scanner (System.in);
System.out.print("Enter your name");
name = scanner.next(); // Get what the user types.


답변

간단한 프로그램을 작성하여 사용자 이름을 요구하고 응답자가 입력을 사용하는 것을 인쇄 할 수 있습니다.

또는 사용자에게 두 개의 숫자를 입력하도록 요청하면 해당 숫자를 더하거나 곱하거나 빼거나 나누고 계산기 동작과 같이 사용자 입력에 대한 답변을 인쇄 할 수 있습니다.

스캐너 클래스가 필요합니다. 당신은에있는 import java.util.Scanner;및 코드에서 당신은 사용할 필요가

Scanner input = new Scanner(System.in);

입력은 변수 이름입니다.

Scanner input = new Scanner(System.in);

System.out.println("Please enter your name : ");
s = input.next(); // getting a String value

System.out.println("Please enter your age : ");
i = input.nextInt(); // getting an integer

System.out.println("Please enter your salary : ");
d = input.nextDouble(); // getting a double

방법이 다릅니다 참조 : input.next();, i = input.nextInt();,d = input.nextDouble();

String에 따르면 int와 double은 나머지 방식과 동일합니다. 코드 상단에있는 import 문을 잊지 마십시오.

블로그 게시물 “스캐너 클래스 및 사용자 입력 받기” 도 참조하십시오 .


답변

가장 좋은 두 가지 옵션은 BufferedReaderScanner입니다.

가장 널리 사용되는 방법은 Scanner간단하고 쉬운 구현뿐만 아니라 텍스트를 기본 데이터로 구문 분석하는 강력한 유틸리티 때문에 개인적으로 선호합니다.

스캐너 사용의 장점

  • 사용하기 쉬운 Scanner수업
  • 쉬운 숫자 입력 (int, short, byte, float, long 및 double)
  • 더 편리한 예외는 확인되지 않습니다. 문명은 예외이며, 예외를 명시하거나 파악하는 것은 프로그래머의 몫입니다.
  • 줄, 공백 및 정규식으로 구분 된 토큰을 읽을 수 있습니다

BufferedInputStream의 장점


전반적으로 각 입력 방법은 목적이 다릅니다.

  • 많은 양의 데이터를 입력하는 BufferedReader것이 더 나을 수 있습니다

  • 많은 숫자를 입력하는 경우 Scanner자동 구문 분석이 수행 되므로 매우 편리합니다.

좀 더 기본적인 용도 Scanner로 사용하기 쉽고 프로그램을 작성하기 쉽기 때문에 권장합니다 . 다음은을 만드는 방법에 대한 간단한 예입니다 Scanner. 아래에 사용 방법에 대한 포괄적 인 예를 제공하겠습니다.Scanner

Scanner scanner = new Scanner (System.in); // create scanner
System.out.print("Enter your name");       // prompt user
name = scanner.next();                     // get user input

(에 대한 자세한 정보에 대한 BufferedReader참조 BufferedReader의 사용 방법 및 참조 char의 읽기 라인 )


java.util.Scanner

import java.util.InputMismatchException; // import the exception catching class
import java.util.Scanner; // import the scanner class

public class RunScanner {

    // main method which will run your program
    public static void main(String args[]) {

        // create your new scanner
        // Note: since scanner is opened to "System.in" closing it will close "System.in". 
        // Do not close scanner until you no longer want to use it at all.
        Scanner scanner = new Scanner(System.in);

        // PROMPT THE USER
        // Note: when using scanner it is recommended to prompt the user with "System.out.print" or "System.out.println"
        System.out.println("Please enter a number");

        // use "try" to catch invalid inputs
        try {

            // get integer with "nextInt()"
            int n = scanner.nextInt();


            System.out.println("Please enter a decimal"); // PROMPT
            // get decimal with "nextFloat()"
            float f = scanner.nextFloat();


            System.out.println("Please enter a word"); // PROMPT
            // get single word with "next()"
            String s = scanner.next();

            // ---- Note: Scanner.nextInt() does not consume a nextLine character /n 
            // ---- In order to read a new line we first need to clear the current nextLine by reading it:
            scanner.nextLine();
            // ----
            System.out.println("Please enter a line"); // PROMPT
            // get line with "nextLine()"
            String l = scanner.nextLine();


            // do something with the input
            System.out.println("The number entered was: " + n);
            System.out.println("The decimal entered was: " + f);
            System.out.println("The word entered was: " + s);
            System.out.println("The line entered was: " + l);


        }
        catch (InputMismatchException e) {
            System.out.println("\tInvalid input entered. Please enter the specified input");
        }

        scanner.close(); // close the scanner so it doesn't leak
    }
}

같은 다른 클래스를 참고 Console하고 DataInputStream또한 실행 가능한 대안이다.

Console암호를 읽을 수있는 기능과 같은 강력한 기능이 있지만 일부 IDE (예 : Eclipse)에서 사용할 수있는 것은 아닙니다. Eclipse가 발생하는 이유는 Eclipse가 시스템 콘솔을 사용하여 최상위 프로세스가 아닌 백그라운드 프로세스로 애플리케이션을 실행하기 때문입니다. 다음은Console 클래스 를 구현하는 방법에 대한 유용한 예에 대한 링크 입니다.

DataInputStream기본적으로 입력 스트림에서 기계 독립적 인 방식으로 입력을 기본 데이터 유형으로 읽는 데 사용됩니다. DataInputStream일반적으로 이진 데이터를 읽는 데 사용됩니다. 또한 특정 데이터 유형을 읽기위한 편리한 방법을 제공합니다. 예를 들어, UTF 문자열 안에 여러 줄을 포함 할 수있는 UTF 문자열을 읽는 방법이 있습니다.

그러나 더 복잡한 클래스이며 구현하기가 어렵 기 때문에 초보자에게는 권장되지 않습니다. 다음은 을 구현하는 유용한 예제에 대한 링크DataInputStream 입니다.