我是Java新手,我正在通过编写一些代码来学习,看看会发生什么。这就是我昨天所做的:
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("size of array:");
int size = sc.nextInt();
String tab[] = new String[size];
System.out.println(tab.length);
System.out.println("type your words:");
for(int i = 0; i < tab.length; i++) {
tab[i] = sc.nextLine();
}
for(int i = 0; i < tab.length;i++){
System.out.println(tab[i] + " " +i);
}
}
这就是我得到的输出:
size of array:
3
3
type your words:
a
b
0
a 1
b 2
我的问题是为什么我只能输入两个值并从索引1开始? 我知道我可以使用ArrayList,如果数组的维度将被硬编码,一切正常。我不是在寻找工作代码,而是在解释为什么会这样。 抱歉英文不好。
答案 0 :(得分:3)
sc.nextInt()
只需阅读int
- 您输入的部分内容。不读取行尾字符。这意味着您第一次调用sc.nextLine()
时会读取行尾字符而不是您要提供的新输入。
在sc.nextLine()
之后添加sc.nextInt()
,您的代码应按预期工作