我正在尝试解决这个问题:
编写一个名为GradesAverage的程序,它会提示用户输入 学生人数,从键盘读取,并将其保存在int中 变量名为numStudents。然后它会提示用户输入等级 每个学生都将他们保存在一个名为grade的int数组中。 您的程序应检查等级是否在0到100之间。样本 会议如下:
Enter the number of students: 3
Enter the grade for student 1: 55
Enter the grade for student 2: 108
Invalid grade, try again...
Enter the grade for student 2: 56
Enter the grade for student 3: 57
The average is 56.0
但是,在我的文件中,这就是程序的工作原理(注意“学生”):
Enter the number of students: 3
Enter the grade for student10 55
Enter the grade for student20 56
Enter the grade for student30 57
你能看到10,20和30吗?它不会显示student1
,student2
和student3
,而是显示student10
,student20
和student30
。
这是我的代码:
import java.util.Scanner;
class GradesAverage {
public static void main (String[] args) {
Scanner miScanner = new Scanner(System.in);
System.out.println("Enter the number of students: ");
int numStudents = miScanner.nextInt();
int numberGrades[] = new int[numStudents];
int averageGrade = 0;
for (int i = 1; i <= numStudents; i++) {
System.out.println("Enter the grade for student" + i + numberGrades[numStudents - i]);
int grade = miScanner.nextInt();
averageGrade += grade;
if (grade < 0 || grade >100) {
System.out.println("Invalid grade, try again...");
break;
}
}
double average = averageGrade/numStudents;
System.out.println("The average is " + average);
}
}
答案 0 :(得分:2)
更改
System.out.println("Enter the grade for student" + i + numberGrades[numStudents - i]);
到
System.out.println("Enter the grade for student " + i + ":");
由于额外numberGrades[numStudents - i]
而输出额外的 0 。
为什么确切为零?因为numberGrades
是一个数组;在初始化数组时,它会将其元素初始化为默认类型&#39;值。 (在这种情况下,它是int
的数组,所以它的所有元素都被初始化为0)
PS:您在冒号后看到的那个数字(在本例中为55):
... student 1: 55
实际上是输入,而不是 sysout 。
答案 1 :(得分:1)
System.out.println("Enter the grade for student" + i + numberGrades[numStudents - i]);
打印出来输入学生i
numberGrades[numStudents - i]
在打印之前不会添加这些内容,而是打印每个项目。