输出无法打印我输入的所有数据

时间:2017-11-03 13:42:52

标签: java output

我已经在同一块java代码上工作了一个多星期了,以前是完全混乱但是我现在已经把它(通过大约一百万次迭代)到了一个有点工作的阶段。我需要的输出是最后三个学生姓名,在他们的名字旁边有一个通过或失败,但是我的代码只会输出我输入的最后一个学生名字,完全忽略我输入的其余数据。

如果有人可以教我出错的地方,以及我已经制作和迭代的代码质量,我们将非常感激。对于那些仅仅因为看起来很容易让你失去信心的人,我们并不像你一样经历过,也不会忘记你曾经一度在我的位置,所以要深思熟虑。

class Main extends BIO {
    public static void main(String args[]) {
        {
            int i = 0;
            int moduleMark = BIO.getInt();
            String first_name = BIO.getString();

            while (i++ < 3) {
                System.out.print("Enter The Students name  : ");
                first_name = BIO.getString();

                if (first_name.equals("END"))
                    break;

                System.out.print("Their Module mark   : ");
                moduleMark = BIO.getInt();


            }
            if (moduleMark >= 40) {
                System.out.println(first_name + " Pass");

            } else {
                System.out.println(first_name + " Fail");

            }

        }
    }
}

1 个答案:

答案 0 :(得分:0)

first_name不断被覆盖在循环中。退出循环时,first_name将是它收到的姓氏。

如果您可以随意打印,只需在循环内打印即可。这将在打印结果和要求新名称/等级之间交替:

while (i++ < 3) {
    System.out.print("Enter The Students name  : ");
    first_name = BIO.getString();

    if (first_name.equals("END"))
        break;

    System.out.print("Their Module mark   : ");
    moduleMark = BIO.getInt();

    if (moduleMark >= 40) {
        System.out.println(first_name + " Pass");

    } else {
        System.out.println(first_name + " Fail");

}

如果必须最后打印,您需要将名称和成绩放入列表中,然后在列表中迭代:

// Create lists to hold grades and names
List<String> names = new ArrayList<>();
List<Integer> grades = new ArrayList<>();
while (i++ < 3) {
    System.out.print("Enter The Students name  : ");
    first_name = BIO.getString();

    if (first_name.equals("END"))
        break;

    // Add name to list
    names.add(first_name);

    System.out.print("Their Module mark   : ");
    moduleMark = BIO.getInt();

    // Add grade to list
    grades.add(moduleMark);

}

// Iterate both lists at once, printing inside the loop
for(int i = 0; i < names.size(); i++) {
    String name = names.get(i);
    Integer grade = grades.get(i);

    if (grade >= 40) {
        System.out.println(name + " Pass");

    } else {
        System.out.println(name + " Fail");

    }

}