将整数输入到数组错误?

时间:2015-06-16 20:00:08

标签: java arrays input

我的代码的目的是显示学生编号及其各自的成绩如下:

             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]);
        }
    }
}

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);
    }
}

这将使您只读取一次输入的数字,然后在检查边界然后设置成绩时使用该数字。