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

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

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

Одним из простейших способов является использование объекта 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

 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(br.readLine()); 

Класс DataInputStream

 import java.io.DataInputStream; DataInputStream dis = new DataInputStream(System.in); int i = dis.readInt(); 

Метод readLine из classа DataInputStream устарел . Чтобы получить значение String, вы должны использовать предыдущее решение с BufferedReader


Класс Console

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

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

Вы можете использовать class « Сканер » или «Класс консоли»

 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 с помощью 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. 

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

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

Итак, вам нужен class сканера. Вам нужно 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 одинаковы для остальных. Не забудьте оператор импорта в верхней части кода.

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

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

 BufferedReader bufferReader = new BufferedReader(new InputStreamReader(System.in)); String inputLine = bufferReader.readLine(); 

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

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

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

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

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

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

  1. System.in
  2. InputStreamReader
  3. BufferedReader

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

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

Только одна дополнительная деталь. Если вы не хотите рисковать утечкой памяти / ресурса, вы должны закрыть stream сканера, когда вы закончите:

 myScanner.close(); 

Обратите внимание, что java 1.7 и более поздние версии воспринимают это как предупреждение о компиляции (не спрашивайте, как я знаю это 🙂

 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); } } 
 Вход сканера = новый сканер (System.in);
 int integer = input.nextInt ();
 Строка string = input.next ();
 long longInteger = input.nextLong ();
 Scanner input = new Scanner(System.in); String inputval = input.next(); 

Добавить 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); } } 

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

  InputStreamReader inp = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(inp); // you will need to import these things. 

Вот как вы их применяете

  String name = br.readline(); 

Поэтому, когда пользователь вводит свое имя в консоль, «String name» будет хранить эту информацию.

Если это номер, который вы хотите сохранить, код будет выглядеть так:

  int x = Integer.parseInt(br.readLine()); 

Хоп это помогает!

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

Может быть что-то вроде этого …

 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; } } } } в 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?") 

Вот более развитая версия принятого ответа, в которой рассматриваются две общие потребности:

  • Сбор пользовательского ввода несколько раз, пока не будет введено значение выхода
  • Работа с недопустимыми входными значениями (нецелые в этом примере)

Код

 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 приведет к нескольким исключениям.

 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 
Interesting Posts

Как просмотреть данные из файла .RData?

Проверить, существует ли файл

как получить весь список детей от Firebase android

В чем разница между src и фоном ImageView

Является ли это поведение vector :: resize (size_type n) в C ++ 11 и Boost.Container правильным?

Что делает request_mem_region () на самом деле и когда это необходимо?

Могу ли я запускать 3 монитора одновременно на видеокарте ASUS EAH5670?

Могу ли я создать объект активности в другом classе?

Загрузка нескольких файлов без использования Zip-файла

Как изменить цвет строки состояния для соответствия приложению в Lollipop?

Что случилось с использованием == для сравнения float в Java?

DropDownListДля выбора значения

Вызывается метод расширения Swift, а не метод, реализованный в подclassе

Не удается извлечь внешний жесткий диск USB в Windows 10

Могу ли я снова запустить свою программу Microsoft Office 2010 Starter после истечения срока действия пробной версии Office?

Давайте будем гением компьютера.