java我试图用一定数量的元素创建一个数组,但是当使用一个变量时,它不起作用
在这里,我在变量长度中输入了一个4值。我应该得到一个包含4个元素的数组,但我只能输入3个元素
public static void main(String[] args) {
int length;
Scanner input = new Scanner(System.in);
System.out.print("Length: ");
length = input.nextInt();
String[] my_friend_names = new String[length];
for (int i = 0; i < length; i++) {
my_friend_names[i] = input.nextLine();
}
for (int i = 0; i < length; i++) {
System.out.println("Name: " + my_friend_names[i]);
}
}
输出:
- 长度:4
- 一,
- 二,
- 三,
- 姓名:
- 姓名:1
- 姓名:2
- 姓名:3
现在,如果我将length变量更改为数字4,它就可以工作了
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String[] my_friend_names = new String[4];
for (int i = 0; i < 4; i++) {
my_friend_names[i] = input.nextLine();
}
for (int i = 0; i < 4; i++) {
System.out.println("Name: " + my_friend_names[i]);
}
}
输出:
- 一,
- 二,
- 三,
- 四,
- 姓名:1
- 姓名:2
- 姓名:3
- 姓名:4
你知道为什么吗
# 1 楼答案
这是因为扫描仪api的使用不正确。 在第一个示例中,当您使用
input.nextInt();
时,它只读取该行的整数部分,扫描器仍不使用新行字符。 稍后当你打电话给扫描器。nextLine()返回输入的4后面的字符和一个空字符串的新行这个问题以前已经回答过了
Scanner is skipping nextLine() after using next() or nextFoo()?
Can't use Scanner.nextInt() and Scanner.nextLine() together
# 2 楼答案
Java数组是固定的。尝试使用列表代替