Programing

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

lottogame 2020. 3. 12. 08:06
반응형

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 문을 잊지 마십시오.

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


여기에서 프로그램은 사용자에게 숫자를 입력하도록 요청합니다. 그 후, 프로그램은 숫자의 자릿수와 자릿수의 합계를 인쇄합니다.

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();

가장 좋은 두 가지 옵션은 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 입니다.


다음을 사용하여 질문에서 얻은 프로그램은 다음과 같습니다 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/ :

키보드에서 데이터를 어떻게 받아들입니까?

세 가지 물체가 필요합니다

  1. System.in
  2. InputStreamReader
  3. 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 IOExceptionmain()추가 한 다음

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

반응형