我的代码的目的是显示学生编号及其各自的成绩如下:
Student Grade
1 53
2 45
所以......
我使用了一个5x2数组,用户可以在其中输入等级的值...
然而我遇到一个问题,在输入成绩时,出于某种原因我必须输入3个值,在所有3个输入值中,只考虑第3个。
我的问题:
(1)为什么我甚至能够为每个学生输入3个值(每个学生只能输入1个值)。
(2)为什么它被认为是第3个值?
这是我的代码:
import java.util.*;
public class practice {
public static void main(String[] args) {
int[][] studentGrade = new int[5][2];
for(int i = 0; i<5; i++) {
studentGrade[i][0] = i+1;
}
for(int j = 0; j<5; j++) {
System.out.printf("Student %s: ", j+1);
Scanner input = new Scanner(System.in);
if(input.nextInt()>=0 && input.nextInt()<=100) {
studentGrade[j][1] = input.nextInt();
}
else {
studentGrade[j][1] = 0;
System.out.printf("Student %s's mark has been defaulted", j);
}
}
System.out.print("\nStudent \t Grade");
for(int s=0; s<5; s++) {
System.out.print("\n" + studentGrade[s][0] +"\t" + "\t " + studentGrade[s][1]);
}
}
}
答案 0 :(得分:1)
input.nextInt()
使用流中的下一个整数。
你需要这样做:
Scanner input = new Scanner (System.in);
for (int j = 0; j < 5; j++) {
System.out.printf("Student %s: ", j+1);
int num = input.nextInt();
if (num >= 0 && num <= 100)
studentGrade[j][1] = num;
else {
studentGrade[j][1] = 0;
System.out.printf("Student %s's mark has been defaulted", j+1);
}
}
这将使您只读取一次输入的数字,然后在检查边界然后设置成绩时使用该数字。