如何在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();
BufferedReader
和InputStreamReader
类
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/ :
如何从键盘接受数据?
我们需要三个对象,
- System.in
- InputStreamReader中
的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 spaces
inputthis 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