有些机构可以解释为什么在我的String Array的第一个单元格中存储空白空间?我试图将通过控制台输入的每一行存储到一个String数组中。
import java.util.Scanner;
public class ClassNameHere {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int numberOfLines = in.nextInt();
String[] lines = new String[numberOfLines];
for( int i = 0; i < numberOfLines; i++ ){
lines[i] = in.nextLine();
}
for( int i = 0; i < numberOfLines; i++ ){
System.out.println(lines[i]);
}
}
}
答案 0 :(得分:1)
致电in.nextInt()
后,第一次拨打in.nextLine()
会返回同一行的其余部分,因此它为空。
您应该在循环之前添加对in.nextLine()
的调用以使用该空行。
int numberOfLines = in.nextInt();
String[] lines = new String[numberOfLines];
in.nextLine(); // add this
for( int i = 0; i < numberOfLines; i++ ){
lines[i] = in.nextLine();
}
for( int i = 0; i < numberOfLines; i++ ){
System.out.println(lines[i]);
}
答案 1 :(得分:0)
以下代码适合您。
int numberOfLines = in.nextInt();
in.nextLine(); //Add this.
in.nextInt();
读取整数值,然后点击输入in.nextLine();
答案 2 :(得分:0)
相关代码是
// this reads a number, not the new line after the number
int numberOfLines = in.nextInt();
// reads the rest of the first line you typed.
lines[i] = in.nextLine();
如果您想忽略号码后面的其余部分,请添加in.nextLine();
答案 3 :(得分:0)
您可以使用nextLine()而不是int numberOfLines = in.nextInt();
答案 4 :(得分:0)
我想这是因为方法nextInt()
只读取数字(3),然后第一次调用newline
就会获取后面的nextLine()
。
答案 5 :(得分:0)
in.nextInt()
之后只读取int值而不是换行符。因此,您的in.nextLine()
会读取换行符,因此您的第一个索引为空。要消除此问题,请在阅读in.nextLine()
后添加虚拟int
。
int numberOfLines = in.nextInt();
in.nextLine();
另一种方法是使用nextLine()
代替nextInt()
来读取并解析int
的输入。
int numberOfLines = Integer.parseInt(in.nextLine());