답변:
요구 사항에 따라 다음 옵션 중 하나를 사용할 수 있습니다.
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에서 제대로 작동하지 않습니다.
DataInputStream
이진 데이터를 읽기위한 것 입니다. readInt
on을 사용 하면 문자 데이터에서 정수를 구문 분석 System.in
하지 않고 대신 유니 코드 값을 해석하고 넌센스를 리턴합니다. 자세한 내용 DataInput#readInt
은 DataInputStream
구현을 참조하십시오 DataInput
.
가장 간단한 방법 중 하나는 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();
Scanner reader1 = new Scanner(System.in);
있습니까?
스캐너 클래스 또는 콘솔 클래스를 사용할 수 있습니다
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);
간단한 프로그램을 작성하여 사용자 이름을 요구하고 응답자가 입력을 사용하는 것을 인쇄 할 수 있습니다.
또는 사용자에게 두 개의 숫자를 입력하도록 요청하면 해당 숫자를 더하거나 곱하거나 빼거나 나누고 계산기 동작과 같이 사용자 입력에 대한 답변을 인쇄 할 수 있습니다.
스캐너 클래스가 필요합니다. 당신은에있는 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
수업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의 읽기 라인 )
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
입니다.
DataInputStream
. 설명 Scanner
은 프리미티브로 데이터를 읽는 사용 사례와 동일하게 들립니다 . 또한 누군가 사용자 입력을 얻는 방법을 모르는 단계에있는 경우 표준 라이브러리의 일부를 특정 IDE에서 사용할 수없는 이유를 이해하지 못할 수도 있습니다. 확실히 저의 경우입니다. 왜 Console
이용할 수 없습니까?
try-with-resource
하면 더 나아질 것입니다.
여기에서 프로그램은 사용자에게 숫자를 입력하도록 요청합니다. 그 후, 프로그램은 숫자의 자릿수와 자릿수의 합계를 인쇄합니다.
import java.util.Scanner;
public class PrintNumber {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num = 0;
int sum = 0;
System.out.println(
"Please enter a number to show its digits");
num = scan.nextInt();
System.out.println(
"Here are the digits and the sum of the digits");
while (num > 0) {
System.out.println("==>" + num % 10);
sum += num % 10;
num = num / 10;
}
System.out.println("Sum is " + sum);
}
}
다음을 사용하여 질문에서 얻은 프로그램은 다음과 같습니다 java.util.Scanner
.
import java.util.Scanner;
public class Example {
public static void main(String[] args) {
int input = 0;
System.out.println("The super insano calculator");
System.out.println("enter the corrosponding number:");
Scanner reader3 = new Scanner(System.in);
System.out.println(
"1. Add | 2. Subtract | 3. Divide | 4. Multiply");
input = reader3.nextInt();
int a = 0, b = 0;
Scanner reader = new Scanner(System.in);
System.out.println("Enter the first number");
// get user input for a
a = reader.nextInt();
Scanner reader1 = new Scanner(System.in);
System.out.println("Enter the scend number");
// get user input for b
b = reader1.nextInt();
switch (input){
case 1: System.out.println(a + " + " + b + " = " + add(a, b));
break;
case 2: System.out.println(a + " - " + b + " = " + subtract(a, b));
break;
case 3: System.out.println(a + " / " + b + " = " + divide(a, b));
break;
case 4: System.out.println(a + " * " + b + " = " + multiply(a, b));
break;
default: System.out.println("your input is invalid!");
break;
}
}
static int add(int lhs, int rhs) { return lhs + rhs; }
static int subtract(int lhs, int rhs) { return lhs - rhs; }
static int divide(int lhs, int rhs) { return lhs / rhs; }
static int multiply(int lhs, int rhs) { return lhs * rhs; }
}
Scanner
객체 를 만들 필요는 없습니다 . 하나면 충분했을 것입니다.
System
입력을 얻으려면 클래스를 사용하십시오 .
http://fresh2refresh.com/java-tutorial/java-input-output/ :
키보드에서 데이터를 어떻게 받아들입니까?
세 가지 물체가 필요합니다
- System.in
- InputStreamReader
BufferedReader
- InputStreamReader 및 BufferedReader는 java.io 패키지의 클래스입니다.
- 데이터는 InputStream 객체 인 System.in에 의해 키보드로부터 바이트 형태로 수신됩니다.
- 그런 다음 InputStreamReader는 바이트를 읽고 문자로 디코딩합니다.
- 그런 다음 BufferedReader 객체는 문자 입력 스트림에서 텍스트를 읽고 문자를 버퍼링하여 문자, 배열 및 행을 효율적으로 읽을 수 있도록합니다.
InputStreamReader inp = new InputStreamReader(system.in);
BufferedReader br = new BufferedReader(inp);
System.in
(첫 번째 코드 행에서) S
클래스 이름의 대문자 를 갖습니다 .
다음은 두 가지 일반적인 요구를 해결하는보다 정답 화 된 답변입니다.
암호
package inputTest;
import java.util.Scanner;
import java.util.InputMismatchException;
public class InputTest {
public static void main(String args[]) {
Scanner reader = new Scanner(System.in);
System.out.println("Please enter integers. Type 0 to exit.");
boolean done = false;
while (!done) {
System.out.print("Enter an integer: ");
try {
int n = reader.nextInt();
if (n == 0) {
done = true;
}
else {
// do something with the input
System.out.println("\tThe number entered was: " + n);
}
}
catch (InputMismatchException e) {
System.out.println("\tInvalid input type (must be an integer)");
reader.nextLine(); // Clear invalid input from scanner buffer.
}
}
System.out.println("Exiting...");
reader.close();
}
}
예
Please enter integers. Type 0 to exit.
Enter an integer: 12
The number entered was: 12
Enter an integer: -56
The number entered was: -56
Enter an integer: 4.2
Invalid input type (must be an integer)
Enter an integer: but i hate integers
Invalid input type (must be an integer)
Enter an integer: 3
The number entered was: 3
Enter an integer: 0
Exiting...
이 없으면 nextLine()
잘못된 입력은 무한 루프에서 동일한 예외를 반복적으로 트리거합니다. next()
상황에 따라 대신 사용하고 싶을 수도 있지만, 이와 같은 입력으로 this has spaces
인해 여러 예외가 발생 한다는 것을 알고 있습니다.
throws IOException
옆 main()
에 추가 한 다음
DataInputStream input = new DataInputStream(System.in);
System.out.print("Enter your name");
String name = input.readLine();
Java로 입력하는 것은 매우 간단합니다.
import java.util.Scanner;
class GetInputFromUser
{
public static void main(String args[])
{
int a;
float b;
String s;
Scanner in = new Scanner(System.in);
System.out.println("Enter a string");
s = in.nextLine();
System.out.println("You entered string " + s);
System.out.println("Enter an integer");
a = in.nextInt();
System.out.println("You entered integer " + a);
System.out.println("Enter a float");
b = in.nextFloat();
System.out.println("You entered float " + b);
}
}
import java.util.Scanner;
public class Myapplication{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int a;
System.out.println("enter:");
a = in.nextInt();
System.out.println("Number is= " + a);
}
}
BufferedReader를 사용하여 이와 같은 사용자 입력을 얻을 수 있습니다.
InputStreamReader inp = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(inp);
// you will need to import these things.
이것이 당신이 그들을 적용하는 방법입니다
String name = br.readline();
따라서 사용자가 콘솔에 자신의 이름을 입력하면 "문자열 이름"에 해당 정보가 저장됩니다.
저장하려는 숫자 인 경우 코드는 다음과 같습니다.
int x = Integer.parseInt(br.readLine());
도와주세요!
이것은 System.in.read()
함수 를 사용하는 간단한 코드입니다 . 이 코드는 입력 한 내용을 작성합니다. 입력을 한 번만 받으려면 while 루프를 제거 할 수 있으며 원하는 경우 문자 배열에 응답을 저장할 수 있습니다.
package main;
import java.io.IOException;
public class Root
{
public static void main(String[] args)
{
new Root();
}
public Root()
{
while(true)
{
try
{
for(int y = 0; y < System.in.available(); ++y)
{
System.out.print((char)System.in.read());
}
}
catch(IOException ex)
{
ex.printStackTrace(System.out);
break;
}
}
}
}
나는 다음을 좋아한다 :
public String readLine(String tPromptString) {
byte[] tBuffer = new byte[256];
int tPos = 0;
System.out.print(tPromptString);
while(true) {
byte tNextByte = readByte();
if(tNextByte == 10) {
return new String(tBuffer, 0, tPos);
}
if(tNextByte != 13) {
tBuffer[tPos] = tNextByte;
++tPos;
}
}
}
예를 들어, 나는 할 것입니다 :
String name = this.readLine("What is your name?")
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("Welcome to the best program in the world! ");
while (true) {
System.out.print("Enter a query: ");
Scanner scan = new Scanner(System.in);
String s = scan.nextLine();
if (s.equals("q")) {
System.out.println("The program is ending now ....");
break;
} else {
System.out.println("The program is running...");
}
}
}
}
를 사용하여 사용자 입력을 얻을 수 있습니다 Scanner
. next()
for String
또는 nextInt()
for 와 같은 다양한 데이터 유형에 적합한 방법을 사용하여 올바른 입력 유효성 검사를 사용할 수 있습니다 Integer
.
import java.util.Scanner;
Scanner scanner = new Scanner(System.in);
//reads the input until it reaches the space
System.out.println("Enter a string: ");
String str = scanner.next();
System.out.println("str = " + str);
//reads until the end of line
String aLine = scanner.nextLine();
//reads the integer
System.out.println("Enter an integer num: ");
int num = scanner.nextInt();
System.out.println("num = " + num);
//reads the double value
System.out.println("Enter a double: ");
double aDouble = scanner.nextDouble();
System.out.println("double = " + aDouble);
//reads the float value, long value, boolean value, byte and short
double aFloat = scanner.nextFloat();
long aLong = scanner.nextLong();
boolean aBoolean = scanner.nextBoolean();
byte aByte = scanner.nextByte();
short aShort = scanner.nextShort();
scanner.close();
사용자 입력을 얻는 가장 간단한 방법은 스캐너를 사용하는 것입니다. 사용 방법의 예는 다음과 같습니다.
import java.util.Scanner;
public class main {
public static void main(String[]args) {
Scanner sc=new Scanner(System.in);
int a;
String b;
System.out.println("Type an integer here: ");
a=sc.nextInt();
System.out.println("Type anything here:");
b=sc.nextLine();
코드 줄은 import java.util.Scanner;
프로그램에서 프로그래머가 코드에서 사용자 입력을 사용할 것임을 알려줍니다. 말하는 것처럼 스캐너 유틸리티를 가져옵니다. Scanner sc=new Scanner(System.in);
프로그램이 사용자 입력을 시작하도록 지시합니다. 그런 다음 값이없는 문자열 또는 정수를 만든 다음 a=sc.nextInt();
또는 행에 입력해야합니다 a=sc.nextLine();
. 변수에 사용자 입력 값을 제공합니다. 그런 다음 코드에서 사용할 수 있습니다. 도움이 되었기를 바랍니다.
import java.util.Scanner;
public class userinput {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Name : ");
String name = input.next();
System.out.print("Last Name : ");
String lname = input.next();
System.out.print("Age : ");
byte age = input.nextByte();
System.out.println(" " );
System.out.println(" " );
System.out.println("Firt Name: " + name);
System.out.println("Last Name: " + lname);
System.out.println(" Age: " + age);
}
}
class ex1 {
public static void main(String args[]){
int a, b, c;
a = Integer.parseInt(args[0]);
b = Integer.parseInt(args[1]);
c = a + b;
System.out.println("c = " + c);
}
}
// Output
javac ex1.java
java ex1 10 20
c = 30
args
해당 배열의 길이를 먼저 확인하지 않고 요소에 액세스하기위한 제재 : downvote.
다른 사람이 게시 한 것처럼 스캐너를 사용한 키보드 입력이 가능합니다. 그러나 그래픽이 매우 높은시기에 그래픽 사용자 인터페이스 (GUI)가없는 계산기를 만드는 것은 의미가 없습니다.
현대 Java에서 이것은 Scene Builder 와 같은 JavaFX 드래그 앤 드롭 도구를 사용한다는 것을 의미합니다. 하여 계산기 콘솔과 유사한 GUI를 배치하는 것을 의미합니다. Scene Builder를 사용하는 것은 직관적으로 쉬우 며 이미 보유하고있는 이벤트 핸들러에 대한 추가 Java 기술이 필요하지 않습니다.
사용자 입력의 경우 GUI 콘솔 상단에 넓은 TextField가 있어야합니다.
사용자가 기능을 수행 할 번호를 입력하는 곳입니다. TextField 아래에는 기본 (즉, 더하기 / 빼기 / 곱하기 / 나누기 및 메모리 / 호출 / 삭제) 기능을 수행하는 기능 버튼 배열이 있습니다. GUI가 밝혀지면 각 버튼 기능을 Java 구현에 연결하는 '컨트롤러'참조를 추가 할 수 있습니다 (예 : 프로젝트의 컨트롤러 클래스에서 메소드 호출).
이 비디오 는 약간 오래되었지만 여전히 Scene Builder를 사용하는 방법을 보여줍니다.
Scanner
가 사용 가능하다고 생각합니다.