如何使用Scanner类从控制台读取输入?就像这样:
System.out.println("Enter your username: ");
Scanner = input(); // Or something like this, I don't know the code
基本上,我想要的只是让扫描器读取用户名的输入,并将输入分配给一个String变量。
如何使用Scanner类从控制台读取输入?就像这样:
System.out.println("Enter your username: ");
Scanner = input(); // Or something like this, I don't know the code
基本上,我想要的只是让扫描器读取用户名的输入,并将输入分配给一个String变量。
当前回答
从控制台读取数据
BufferedReader is synchronized, so read operations on a BufferedReader can be safely done from multiple threads. The buffer size may be specified, or the default size(8192) may be used. The default is large enough for most purposes. readLine() « just reads data line by line from the stream or source. A line is considered to be terminated by any one these: \n, \r (or) \r\n Scanner breaks its input into tokens using a delimiter pattern, which by default matches whitespace(\s) and it is recognised by Character.isWhitespace. « Until the user enters data, the scanning operation may block, waiting for input. « Use Scanner(BUFFER_SIZE = 1024) if you want to parse a specific type of token from a stream. « A scanner however is not thread safe. It has to be externally synchronized. next() « Finds and returns the next complete token from this scanner. nextInt() « Scans the next token of the input as an int.
Code
String name = null;
int number;
java.io.BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
name = in.readLine(); // If the user has not entered anything, assume the default value.
number = Integer.parseInt(in.readLine()); // It reads only String,and we need to parse it.
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 until the user enters data.
number = sc.nextInt(); // We can read specific data.
System.out.println("Name " + name + "\t number " + number);
// The Console class is not working in the IDE as expected.
java.io.Console cnsl = System.console();
if (cnsl != null) {
// Read a line from the user input. The cursor blinks after the specified input.
name = cnsl.readLine("Name: ");
System.out.println("Name entered: " + name);
}
流的输入和输出
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[] args) {
Scanner sc = new Scanner(System.in);
// Reading of Integer
int number = sc.nextInt();
// Reading of String
String str = sc.next();
}
}
具体理解请参考以下文件。
Doc
现在我们来详细了解一下Scanner类的工作原理:
public Scanner(InputStream source) {
this(new InputStreamReader(source), WHITESPACE_PATTERN);
}
这是用于创建Scanner实例的构造函数。
这里我们传递的是InputStream引用,它只是一个System.In。在这里,它打开了用于控制台输入的InputStream管道。
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);
}
}
通过系统。在这段代码中,将打开套接字以从控制台读取。
您可以编写一个简单的程序来询问用户的姓名,并打印任何回复使用的输入。
或者要求用户输入两个数字,您可以对这些数字进行加、乘、减或除,并像计算器一样打印用户输入的答案。
这里你需要Scanner类。你必须导入java.util.Scanner;,并且在你需要使用的代码中:
Scanner input = new Scanner(System.in);
Input是一个变量名。
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语句。
下面是执行所需操作的完整类:
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);
}
}
读取输入: 扫描仪扫描仪=新的扫描仪(System.in); 字符串输入= scanner.nextLine(); 当你调用一个带有参数/形参的方法时读取输入: 如果(arg游戏。长度!= 2){ System.err。println(" utilzare: java Grep < filier > <cuvant>"); system . exit (1); } 尝试{ grep (args [0], arg游戏[1]); } catch (IOException e) { System.out.println (e.getMessage ()); }
你写过
Scanner = input()
这是错误的方法,你必须创建一个整数或字符串,我更喜欢字符串,然后给一个字符串任意的名字,可以是I可以是n,或者其他的,记住你是在给用户名取名字你也可以给名字取用户名,代码是
String username = sc.nextline();
System.our.println("the username is" + username);
我希望你现在明白了