계산기를 만들려고했지만 사용자 입력을 얻는 방법을 모르기 때문에 계산기를 작동시킬 수 없습니다 .
Java로 사용자 입력을 받으려면 어떻게해야합니까?
답변
요구 사항에 따라 다음 옵션 중 하나를 사용할 수 있습니다.
Scanner
수업
import java.util.Scanner;
Scanner scan = new Scanner(System.in);
String s = scan.next();
int i = scan.nextInt();
BufferedReader
및 InputStreamReader
클래스
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
하므로 int
using 으로 구문 분석해야합니다 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 문을 잊지 마십시오.
블로그 게시물 “스캐너 클래스 및 사용자 입력 받기” 도 참조하십시오 .
답변
가장 좋은 두 가지 옵션은 BufferedReader
및 Scanner
입니다.
가장 널리 사용되는 방법은 Scanner
간단하고 쉬운 구현뿐만 아니라 텍스트를 기본 데이터로 구문 분석하는 강력한 유틸리티 때문에 개인적으로 선호합니다.
스캐너 사용의 장점
- 사용하기 쉬운
Scanner
수업 - 쉬운 숫자 입력 (int, short, byte, float, long 및 double)
- 더 편리한 예외는 확인되지 않습니다. 문명은 예외이며, 예외를 명시하거나 파악하는 것은 프로그래머의 몫입니다.
- 줄, 공백 및 정규식으로 구분 된 토큰을 읽을 수 있습니다
BufferedInputStream의 장점
- BufferedInputStream은 한 번에 단일 바이트가 아닌 데이터 블록을 읽는 것입니다.
- 문자, 문자 배열 및 행을 읽을 수 있습니다
- 확인 된 예외 발생
- 빠른 성능
- 동기화 됨 ( 스레드간에 공유 할 수 없음
Scanner
)
전반적으로 각 입력 방법은 목적이 다릅니다.
-
많은 양의 데이터를 입력하는
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
입니다.