我已经在同一块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");
}
}
}
}
答案 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");
}
}