是的,这是一项任务...... 我有2个阵列;一个用于学生姓名,另一个用于分数。我已经要求用户输入学生数量以初始化两者的大小,然后循环输入过程以填充元素。 但最奇怪的事情发生在以前没有发生过。当代码运行时,学生数组似乎被一个元素缩短(在4个条目之后程序跳转到下一个输入循环),但更奇怪的是截断似乎是在数组的前面,因为得分循环以空白开头,其中名称应为但允许5个输入。
import java.util.Scanner;
public class Ex6_17SortStudents {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int numOfStu;
String[] students;
double[] scores;
System.out.println("Enter the number of students being recorded: ");
numOfStu = input.nextInt();
students = new String[numOfStu];
System.out.println("Enter students' names: ");
for (int i = 0; i < students.length; i++)
students[i] = input.nextLine();
scores = new double[numOfStu];
for (int i = 0; i < students.length; i++) {
System.out.print("Enter score for " + students[i] + ": ");
scores[i] = input.nextDouble();
}
}
}
为什么会发生这种情况的任何想法? 最终有一种,但我认为我有一个混乱。 对不起,如果帖子的格式错误 - 第一次发布;尽我所能。
感谢
答案 0 :(得分:0)
此调试输出应该为您提供问题的线索:
System.out.println("Enter students' names: ");
for (int i = 0; i < students.length; i++) {
System.out.print("Name index " + i + ": ");
students[i] = input.nextLine();
}
this answer 到 this question 正是您需要的答案。
答案 1 :(得分:-1)
使用学生[i] = input.next();
刚检查过,现在就可以了。
nextLine()使您的扫描程序超过当前行并返回跳过的输入 - 因此您几乎跳过了一行。它第一次进入循环时,你会丢失一个i值,即我现在是1,但你的扫描仪不记录用户输入。第二次,当我是1时,它需要输入,等等。
新代码:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int numOfStu;
String[] students;
double[] scores;
System.out.println("Enter the number of students being recorded: ");
numOfStu = input.nextInt();
students = new String[numOfStu];
scores = new double[numOfStu];
System.out.println("Enter students' names: ");
for (int i = 0; i < students.length; i++) {
students[i] = input.next();
}
for (int i = 0; i < students.length; i++) {
System.out.print("Enter score for " + students[i] + ": ");
scores[i] = input.nextDouble();
}
}