如何使用Java中的Scanner类从控制台读取input?
我怎样才能使用Scanner
类从控制台读取input? 像这样的东西:
System.out.println("Enter your username: "); Scanner = input(); // or something like this, I don't know the code
基本上,我想要做的就是让扫描器读取用户名的input,并将input分配给一个String
variables。
一个简单的例子来说明java.util.Scanner
工作原理是从System.in
读取一个整数。 这真的很简单。
Scanner sc = new Scanner(System.in); int i = sc.nextInt();
要检索一个用户名,我可能会使用sc.nextLine()
。
System.out.println("Enter your username: "); Scanner scanner = new Scanner(System.in); String username = scanner.nextLine(); System.out.println("Your username is " + username);
你也可以使用next(String pattern)
如果你想更多的控制input,或者只是validationusername
variables。
在java.util.Scanner
的API文档java.util.Scanner
可以find关于它们实现的更多信息
Scanner scan = new Scanner(System.in); String myLine = scan.nextLine();
从控制台读取数据
-
BufferedReader
是同步的,所以BufferedReader上的读操作可以安全地从多个线程完成。 缓冲区大小可以被指定,或者可以使用默认大小( 8192 )。 默认值对于大多数目的而言足够大。readLine() “ 只是从源码stream中逐行读取数据。 一行被认为是被这些\ n,\ r(或)\ r \ n中的任何一个终止
-
Scanner
使用定界符模式将其input分为标记,默认情况下,该定界符与空格(\ s)匹配,并由Character.isWhitespace
识别。“ 如果用户input数据,扫描操作可能会阻塞等待input。
“ 如果你想从stream中parsing特定types的令牌,使用扫描器( BUFFER_SIZE = 1024 )。 “ 然而,扫描仪不是线程安全的,它必须在外部同步。next()«查找并返回来自此扫描器的下一个完整标记。
nextInt()«将input的下一个标记扫描为int。
码
String name = null; int number; java.io.BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); name = in.readLine(); // if user not entered assumes default value. number = Integer.parseInt(in.readLine()); // It read only String we need to parseit. System.out.println("Name "+name+"\t number "+number); java.util.Scanner sc = new Scanner(System.in).useDelimiter("\\s");; name = sc.next(); // it will not leave untill user enter data. number = sc.nextInt(); // we can read specific data. System.out.println("Name "+name+"\t number "+number); // Console class is not working in IDE as expected. java.io.Console cnsl = System.console(); if (cnsl != null) { // read line from the user input cursor blinks after specified input. name = cnsl.readLine("Name : "); System.out.println("Name entered : " + name); }
Stream的input和输出
Reader Input: output: Yash 777 Line1 = Yash 777 7 Line1 = 7 Scanner Input: output: Yash 777 token1 = Yash token2 = 777
import java.util.Scanner; public class ScannerDemo { public static void main(String[] arguments){ Scanner input = new Scanner(System.in); String username; double age; String gender; String marital_status; int telephone_number; // Allows a person to enter his/her name Scanner one = new Scanner(System.in); System.out.println("Enter Name:" ); username = one.next(); System.out.println("Name accepted " + username); // Allows a person to enter his/her age Scanner two = new Scanner(System.in); System.out.println("Enter Age:" ); age = two.nextDouble(); System.out.println("Age accepted " + age); // Allows a person to enter his/her gender Scanner three = new Scanner(System.in); System.out.println("Enter Gender:" ); gender = three.next(); System.out.println("Gender accepted " + gender); // Allows a person to enter his/her marital status Scanner four = new Scanner(System.in); System.out.println("Enter Marital status:" ); marital_status = four.next(); System.out.println("Marital status accepted " + marital_status); // Allows a person to enter his/her telephone number Scanner five = new Scanner(System.in); System.out.println("Enter Telephone number:" ); telephone_number = five.nextInt(); System.out.println("Telephone number accepted " + telephone_number); } }
有几种方法可以从用户那里获得input。 在这个程序中,我们将采用Scanner Class来完成任务。 这个Scanner类属于java.util,因此程序的第一行是import java.util.Scanner; 它允许用户在java中读取各种types的值。 import语句行应该在java程序的第一行,我们继续进行代码。
in.nextInt();//It just reads the numbers in.nextLine();// It get the String which user enters
要访问Scanner类中的方法,请在“in”中创build一个新的扫描仪对象。 现在我们使用它的一个方法是“下一个”。 “next”方法获取用户在键盘上input的文本string。
这里我使用in.nextLine(); 获取用户input的string。
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); } }
只是另一个简单的例子,祝你好运!
import java.util.Scanner; public class Example { public static void main(String[] args) { int number1, number2, sum; Scanner input = new Scanner(System.in); System.out.println("Enter First multiple"); number1 = input.nextInt(); System.out.println("Enter second multiple"); number2 = input.nextInt(); sum = number1 * number2; System.out.printf("The product of both number is %d" , sum); } }
您可以制作一个简单的程序来询问用户的姓名,并打印回复使用的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” 。
-
阅读input:
Scanner scanner = new Scanner(System.in); String input = scanner.nextLine();
-
在调用带有一些参数/参数的方法时读取input:
if (args.length != 2) { System.err.println("Utilizare: java Grep <fisier> <cuvant>"); System.exit(1); } try { grep(args[0], args[1]); } catch (IOException e) { System.out.println(e.getMessage()); }
import java.util.*; class ss { int id, salary; String name; ss(int id, int salary, String name) { this.id = id; this.salary = salary; this.name = name; } void display() { System.out.println("The id of employee:" + id); System.out.println("The name of employye:" + name); System.out.println("The salary of employee:" + salary); } } class employee { public static void main(String args[]) { Scanner sc = new Scanner(System.in); ss s = new ss(sc.nextInt(), sc.nextInt(), sc.nextLine()); s.display(); } }
当用户input他/她的username
检查有效的input。
java.util.Scanner input = new java.util.Scanner(System.in); String userName; final int validLength = 6; // this is the valid lenght of an user name System.out.print("Please enter the username : "); userName = input.nextLine(); while(userName.length() < validLength) { // if user enters less than validLength characters // ask for entering again System.out.println( "\nUsername needs to be " + validLength + " character long"); System.out.print("\nPlease enter the username again: "); userName = input.nextLine(); } System.out.println("Username is : " + userName);
这是执行所需操作的完整类:
import java.util.Scanner; public class App { public static void main(String[] args) { Scanner input = new Scanner(System.in); final int valid = 6; Scanner one = new Scanner(System.in); System.out.println("Enter your username:"); String s = one.nextLine(); if (s.length() < valid) { System.out.println("Enter a valid username"); System.out.println( "User name must contain " + valid + " characters"); System.out.println("Enter again:"); s = one.nextLine(); } System.out.println("Username accepted: " + s); Scanner two = new Scanner(System.in); System.out.println("Enter your age:"); int a = two.nextInt(); System.out.println("Age accepted: " + a); Scanner three = new Scanner(System.in); System.out.println("Enter your Sex:"); String sex = three.nextLine(); System.out.println("Sex accepted: " + sex); } }
您可以使用Java中的Scanner类
Scanner scan = new Scanner(System.in); String s = scan.nextLine(); System.out.println("String: " + s);
他们是从控制台读取简单的方法。 请find下面的代码: –
import java.util.Scanner; public class ScannerDemo { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //Reading of Integer int number = sc.nextInt(); //Reading of String String str = sc.next(); } }
有关详细的理解,请参阅以下文件。 文件
现在让我们来谈谈扫描仪类工作的详细了解:
public Scanner(InputStream source) { this(new InputStreamReader(source), WHITESPACE_PATTERN); }
这是创build扫描器实例的构造函数。 这里我们传递的是InputStream
引用,它只是一个System.In
。 在这里它打开inputstream控制台input。
public InputStreamReader(InputStream in) { super(in); try { sd = StreamDecoder.forInputStreamReader(in, this, (String)null); // ## check lock object } catch (UnsupportedEncodingException e) { // The default encoding should always be available throw new Error(e); } }
通过传递System.in此代码将打开从控制台读取套接字。
你可以stream这个代码:
Scanner obj= new Scanner(System.in); String s = obj.nextLine();