Как я могу получить пользовательский ввод в Java? - PullRequest
297 голосов
/ 13 марта 2011

Я попытался создать калькулятор, но не могу заставить его работать, потому что я не знаю , как получить пользовательский ввод .

Как я могу получить пользовательский ввод в Java?

Ответы [ 27 ]

390 голосов
/ 13 марта 2011

Один из самых простых способов - использовать объект 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();
307 голосов
/ 23 октября 2013

Вы можете использовать любой из следующих параметров в зависимости от требований.

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 из класса DataInputStream признан устаревшим . Чтобы получить строковое значение, вы должны использовать предыдущее решение с BufferedReader


Console класс

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

По-видимому, этот метод не работает в некоторых IDE.

44 голосов
/ 13 марта 2011

Можно использовать класс Сканер или класс Консоль

Console console = System.console();
String input = console.readLine("Enter input:");
19 голосов
/ 13 марта 2011

Вы можете получить пользовательский ввод, используя BufferedReader.

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

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

Он сохранит значение String в accStr, поэтому вам придется проанализировать его как int используя Integer.parseInt.

int accInt = Integer.parseInt(accStr);
16 голосов
/ 13 марта 2011

Вот как вы можете получить ввод с клавиатуры:

Scanner scanner = new Scanner (System.in);
System.out.print("Enter your name");  
name = scanner.next(); // Get what the user types.
14 голосов
/ 06 мая 2014

Вы можете сделать простую программу, чтобы узнать имя пользователя и распечатать все, что ответ использует ввод.

Или попросите пользователя ввести два числа, и вы можете сложить, умножить, вычесть или разделить эти числа и распечатать ответы для пользовательских вводов точно так же, как поведение калькулятора.

Итак, вам нужен класс Scanner. Вы должны 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 в верхней части кода.

Также см. Сообщение в блоге "Класс сканера и получение пользовательских входных данных" .

8 голосов
/ 01 мая 2013

Здесь программа просит пользователя ввести номер.После этого программа печатает цифры номера и сумму цифр.

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);            
    }
}
8 голосов
/ 13 марта 2011

Чтобы прочитать строку или строку, вы можете использовать объект BufferedReader в сочетании с объектом InputStreamReader следующим образом:

BufferedReader bufferReader = new BufferedReader(new InputStreamReader(System.in));
String inputLine = bufferReader.readLine();
6 голосов
/ 20 июня 2013

Вот ваша программа из вопроса, используя 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; }
}
5 голосов
/ 13 июля 2013

Используйте класс System для получения ввода.

http://fresh2refresh.com/java-tutorial/java-input-output/:

Как данные принимаются с клавиатуры?

Мынужно три объекта,

  1. System.in
  2. InputStreamReader
  3. BufferedReader

    • InputStreamReader и BufferedReader являются классами в Java.io package.
    • Данные получены в виде байтов с клавиатуры System.in, который является объектом InputStream.
    • Затем InputStreamReader считывает байты и декодирует их в символы.
    • Затем, наконец, объект BufferedReader считывает текст из потока ввода символов, буферизует символы, чтобы обеспечить эффективное чтение символов, массивов и строк.
InputStreamReader inp = new InputStreamReader(system.in);
BufferedReader br = new BufferedReader(inp);
...