如何在Java中获得用户input?

我试图创build一个计算器,但我不能得到它的工作,因为我不知道如何获得用户input

如何在Java中获得用户input?

最简单的方法之一是使用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(); 

BufferedReaderInputStreamReader

 import java.io.BufferedReader; 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(); 

DataInputStream类中的readLine方法已被弃用 。 要获得string值,您应该使用BufferedReader的以前的解决scheme


Console

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

显然,这种方法在某些IDE中不能正常工作。

您可以使用Scanner类或控制台类

 Console console = System.console(); String input = console.readLine("Enter input:"); 

你可以使用BufferedReader获得用户input。

 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String accStr; System.out.println("Enter your Account number: "); accStr = br.readLine(); 

它将在accStr存储一个String值,所以你必须使用Integer.parseInt将其parsing为一个int

 int accInt = Integer.parseInt(accStr); 

这里是如何获得键盘input:

 Scanner scanner = new Scanner (System.in); System.out.print("Enter your name"); name = scanner.next(); // Get what the user types. 

您可以制作一个简单的程序来询问用户的姓名,并打印回复使用的input内容。

或者要求用户input两个数字,您可以添加,乘,减或除这些数字,并打印用户input的答案就像计算器的行为。

所以你需要Scanner类。 你必须import java.util.Scanner; 并在你需要使用的代码

 Scanner input = new Scanner(System.in); 

input是一个variables名称。

 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语句。

另见博客文章“扫描仪类和获取用户input” 。

要读取一行或一个string,可以使用一个BufferedReader对象和一个InputStreamReader对象,如下所示:

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

在这里,程序要求用户input一个数字。 之后,程序打印数字的数字和数字的总和。

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

使用System类来获取input。

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

如何从键盘接受数据?

我们需要三个对象,

  1. System.in
  2. InputStreamReader中
  3. 的BufferedReader

    • InputStreamReader和BufferedReader是java.io包中的类。
    • 通过System.in(它是InputStream对象)以键盘的字节forms接收数据。
    • 然后InputStreamReader读取字节并将它们解码为字符。
    • 最后,BufferedReader对象从字符inputstream中读取文本,缓冲字符以提供对字符,数组和行的有效读取。
 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; } } 
 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); } } 
 扫描仪input=新扫描仪(System.in);
 int integer = input.nextInt();
 String string = input.next();
 long longInteger = input.nextLong();

只是一个额外的细节。 如果您不想冒内存/资源泄漏的风险,则应在完成时closures扫描仪stream:

 myScanner.close(); 

请注意,Java 1.7和更高版本捕获这是一个编译警告(不要问我怎么知道:-)

 Scanner input = new Scanner(System.in); String inputval = input.next(); 

然后,在main()旁边添加throws IOException

 DataInputStream input = new DataInputStream(System.in); System.out.print("Enter your name"); String name = input.readLine(); 

在java中input非常简单,你只需要做:

 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获得像这样的用户input:

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

这是你如何应用它们

  String name = br.readline(); 

所以当用户input他的名字到控制台时,“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"); } 

这是接受的答案的一个更加被开发的版本解决两个共同的需要:

  • 重复收集用户input,直到input一个退出值
  • 处理无效的input值(在这个例子中是非整数)

 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() ,错误的input会在无限循环中重复触发相同的exception。 你可能想使用next()取决于情况,但知道像this has spacesinputthis has spaces会产生多个exception。

这是一个使用System.in.read()函数的简单代码。 这段代码只是写出所有input的内容。 如果您只想input一次,您可以摆脱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 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