Java로 사용자 입력을 받으려면 어떻게해야합니까?
계산기를 만들려고했지만 사용자 입력을 얻는 방법을 모르기 때문에 계산기를 작동시킬 수 없습니다 .
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 문을 잊지 마십시오.
블로그 게시물 "스캐너 클래스 및 사용자 입력 받기" 도 참조하십시오 .
여기에서 프로그램은 사용자에게 숫자를 입력하도록 요청합니다. 그 후, 프로그램은 숫자의 자릿수와 자릿수의 합계를 인쇄합니다.
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);
}
}
행이나 문자열을 읽으려면 다음과 같이 하나 BufferedReader
와 결합 된 객체를 사용할 수 있습니다 InputStreamReader
.
BufferedReader bufferReader = new BufferedReader(new InputStreamReader(System.in));
String inputLine = bufferReader.readLine();
가장 좋은 두 가지 옵션은 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
입니다.
다음을 사용하여 질문에서 얻은 프로그램은 다음과 같습니다 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; }
}
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); 정수 정수 = 입력 .nextInt (); 문자열 string = input.next (); long longInteger = input.nextLong ();
하나의 추가 세부 사항입니다. 메모리 / 리소스 유출의 위험을 감수하지 않으려면 완료되면 스캐너 스트림을 닫아야합니다.
myScanner.close();
Java 1.7 이상에서는 이것을 컴파일 경고로 잡습니다 (내가 어떻게 알지 묻지 마십시오 :-)
Scanner input = new Scanner(System.in);
String inputval = input.next();
import java.util.Scanner;
class Daytwo{
public static void main(String[] args){
System.out.println("HelloWorld");
Scanner reader = new Scanner(System.in);
System.out.println("Enter the number ");
int n = reader.nextInt();
System.out.println("You entered " + n);
}
}
다음은 두 가지 일반적인 요구를 해결하는보다 정답 화 된 답변입니다.
- 종료 값이 입력 될 때까지 사용자 입력을 반복적으로 수집
- 유효하지 않은 입력 값 다루기 (이 예제에서는 정수가 아님)
암호
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());
도움이 되세요!
이렇게 될 수 있습니다 ...
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
System.out.println("Enter a number: ");
int i = reader.nextInt();
for (int j = 0; j < i; j++)
System.out.println("I love java");
}
이것은 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?")
를 사용하여 사용자 입력을 얻을 수 있습니다 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 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
다른 사람이 게시 한 것처럼 스캐너를 사용한 키보드 입력이 가능합니다. 그러나 그래픽이 매우 높은시기에 그래픽 사용자 인터페이스 (GUI)가없는 계산기를 만드는 것은 의미가 없습니다.
현대 Java에서 이것은 Scene Builder 와 같은 JavaFX 드래그 앤 드롭 도구를 사용 하여 계산기 콘솔과 유사한 GUI를 배치하는 것을 의미합니다. Scene Builder를 사용하는 것은 직관적으로 쉬우 며 이미 보유하고있는 이벤트 핸들러에 대한 추가 Java 기술이 필요하지 않습니다.
사용자 입력의 경우 GUI 콘솔 상단에 넓은 TextField가 있어야합니다.
사용자가 기능을 수행 할 숫자를 입력하는 곳입니다. TextField 아래에 기본 (즉, 더하기 / 빼기 / 곱하기 / 나누기 및 메모리 / 호출 / 삭제) 기능을 수행하는 기능 버튼 배열이 있습니다. GUI가 밝혀지면 각 버튼 기능을 Java 구현에 연결하는 '컨트롤러'참조를 추가 할 수 있습니다 (예 : 프로젝트의 컨트롤러 클래스에서 메소드 호출).
이 비디오 는 약간 오래되었지만 여전히 Scene Builder를 사용하는 방법을 보여줍니다.
참고 URL : https://stackoverflow.com/questions/5287538/how-can-i-get-the-user-input-in-java
'Programing' 카테고리의 다른 글
인터페이스 또는 추상 클래스 : 어느 것을 사용해야합니까? (0) | 2020.03.12 |
---|---|
Sublime Text에서 파일의 현재 인코딩을 어떻게 볼 수 있습니까? (0) | 2020.03.12 |
Excel에서 전체 열에 수식을 적용하는 바로 가기 (0) | 2020.03.12 |
안드로이드에서 비트 맵의 크기를 조정하는 방법? (0) | 2020.03.12 |
Android에서 뷰 배경색의 애니메이션 변경 (0) | 2020.03.12 |