如何在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