如何从 java 中删除输入缓冲区
how to remove input buffer from java
我正在尝试输入一定数量的字符串,但最后一次输入会自动换行作为输入。我需要删除输入缓冲区 plz help
Scanner input = new Scanner(System.in);
int n = input.nextInt(); //n is my input number
String[] arr = new String[n];
int i,j;
for(i=0;i<n;i++)
{
arr[i] = input.nextLine();
}
如果我输入 n=5 作为输入,当我打印数组时,我的最后一个输入字符串丢失并被新行字符替换
只消耗第一个整数后的换行符:
Scanner input = new Scanner(System.in);
int n = input.nextInt(); //n is my input number
input.nextLine();
String[] arr = new String[n];
int i,j;
for(i=0;i<n;i++)
{
arr[i] = input.nextLine();
}
演示以确保我们就代码应该做什么达成一致:
public static void main(String[] args) {
String text =
"5\n" +
"line 1\n" +
"line 2\n" +
"line 3\n" +
"line 4\n" +
"line 5\n" +
"line 6\n";
Scanner input = new Scanner(new ByteArrayInputStream(text.getBytes()));
int n = input.nextInt(); //n is my input number
input.nextLine();
String[] arr = new String[n];
for(int i = 0; i < n; i++) {
arr[i] = input.nextLine();
}
System.out.println(Arrays.asList(arr)); // [line 1, line 2, line 3, line 4, line 5]
}
对 nextInt()
的调用不会消耗您在控制台中输入的新行,因此您可以使用 Scanner.nextLine()
而不是 nextInt()
并转换它来消耗额外的换行符到 int
。
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//Convert the int to a String
int n = Integer.parseInt(input.nextLine());//n is my input number
String[] arr = new String[n];
int i, j;
for (i = 0; i < n; i++) {
arr[i] = input.nextLine();
}
for (String s : arr) {
System.out.println(s);
}
}
Scanner.nextInt()
只消耗输入时给出的整数。因此,如果您提供一个整数作为输入,例如 5
并按回车键,那么 Scanner.nextInt()
将仅消耗 5
,而 enter/return 将传递给 nextLine
。这就是为什么你认为,你可以少输入 1。
因此,在 Scanner.nextInt()
之后,您应该添加一个 Scanner.nextLine()
来使用 enter/return 键
我正在尝试输入一定数量的字符串,但最后一次输入会自动换行作为输入。我需要删除输入缓冲区 plz help
Scanner input = new Scanner(System.in);
int n = input.nextInt(); //n is my input number
String[] arr = new String[n];
int i,j;
for(i=0;i<n;i++)
{
arr[i] = input.nextLine();
}
如果我输入 n=5 作为输入,当我打印数组时,我的最后一个输入字符串丢失并被新行字符替换
只消耗第一个整数后的换行符:
Scanner input = new Scanner(System.in);
int n = input.nextInt(); //n is my input number
input.nextLine();
String[] arr = new String[n];
int i,j;
for(i=0;i<n;i++)
{
arr[i] = input.nextLine();
}
演示以确保我们就代码应该做什么达成一致:
public static void main(String[] args) {
String text =
"5\n" +
"line 1\n" +
"line 2\n" +
"line 3\n" +
"line 4\n" +
"line 5\n" +
"line 6\n";
Scanner input = new Scanner(new ByteArrayInputStream(text.getBytes()));
int n = input.nextInt(); //n is my input number
input.nextLine();
String[] arr = new String[n];
for(int i = 0; i < n; i++) {
arr[i] = input.nextLine();
}
System.out.println(Arrays.asList(arr)); // [line 1, line 2, line 3, line 4, line 5]
}
对 nextInt()
的调用不会消耗您在控制台中输入的新行,因此您可以使用 Scanner.nextLine()
而不是 nextInt()
并转换它来消耗额外的换行符到 int
。
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//Convert the int to a String
int n = Integer.parseInt(input.nextLine());//n is my input number
String[] arr = new String[n];
int i, j;
for (i = 0; i < n; i++) {
arr[i] = input.nextLine();
}
for (String s : arr) {
System.out.println(s);
}
}
Scanner.nextInt()
只消耗输入时给出的整数。因此,如果您提供一个整数作为输入,例如 5
并按回车键,那么 Scanner.nextInt()
将仅消耗 5
,而 enter/return 将传递给 nextLine
。这就是为什么你认为,你可以少输入 1。
因此,在 Scanner.nextInt()
之后,您应该添加一个 Scanner.nextLine()
来使用 enter/return 键