我的代码有一些问题,这是该程序的总体目标。
您的一位教授听说了您的新兴编程专业知识,并要求您编写一个可用于帮助他们评分的 SINGLE 程序。教授给出了三门 50 分的考试和一次 100 分的期末考试。您的程序将提示用户输入学生的姓名,输入为 Firstname Lastname(即 Bob Smith)、学生的 3 次考试成绩和 1 次期末考试成绩(全部为整数)。班级规模因学期而异,但限制为 100 人(声明为常数)。
在进行任何计算或显示任何输出之前,请阅读所有学生的信息。确认 3 次考试成绩在 0-50 分之间,并且在输入时确保期末考试成绩在 0-100 分之间。将最小值和最大值声明为常数,以便根据需要轻松更新它们。如果无效,则显示错误消息并允许用户重新输入该无效分数。读入所有学生信息后,以 LASTNAME、FIRSTNAME(全部大写)的格式显示每个学生的姓名、学生的考试百分比(所有考试的总和加上可能的期末/总数)到小数点后 1 位和学生的期末成绩。
这就是我所拥有的:
import java.util.*;
import java.text.*;
public class Proj4 {
public static void main(String[] args){
Scanner s= new Scanner(System.in);
String input;
String again = "y";
final int MAX_STUDENTS = 100;
final int MIN_EXAM = 0;
final int MAX_EXAM = 50;
final int MIN_FINAL = 0;
final int MAX_FINAL = 100;
String[] names = new String[MAX_STUDENTS];
int [] exams = new int[MAX_STUDENTS * 4];
int student = 1;
do
{
System.out.print("PLease enter the name of student " + student + ": " );
for (int k = 0; k < 1; k++) {
names[k] = s.nextLine().toUpperCase();
}
for ( int i = 0; i < 4; i++){
if(i==3){
System.out.print("Please enter score for Final Exam: ");
exams[i] = s.nextInt();
}
else{
System.out.print("Please enter score for Exam " + (i+1) + ": ");
exams[i] = s.nextInt();
if((exams[0]<MIN_EXAM||exams[0]>MAX_EXAM)||(exams[1]<MIN_EXAM||exams[1]>MAX_EXAM)||(exams[2]<MIN_EXAM||exams[2]>MAX_EXAM)){
System.out.println("Invalid enter 0-50 only...");
System.out.print("Please re-enter score: ");
exams[i] = s.nextInt();
}
else if(exams[3]<MIN_FINAL||exams[3]>MAX_FINAL){
System.out.println("Invalid enter 0-100 only...");
System.out.print("Please re-enter score: ");
exams[i] = s.nextInt();
}
}
}
System.out.print("do you wish to enter another? (y or n) ");
again = s.next();
if(again!="y")
student++;
}while (again.equalsIgnoreCase ("y"));
System.out.println("***Class Results***");
System.out.println(names[1] + "," + names[0] + " " + "Exam Percentage: "+ ((exams[0]+exams[1]+exams[2]+exams[3])/(MAX_EXAM*3+MAX_FINAL)));
}
}
我遇到的问题是:
- 弄清楚如何分配用户输入的测试分数而不仅仅是第一个学生,我相信我只为一个学生设置了正确的分数,但是当我转到第二个学生时它遇到了问题。
由于某种原因,我无法弄清楚这条线
System.out.print("do you wish to enter another? (y or n) "); again = s.next();
不允许我输入任何东西,不是 y 不是 n 不是任何东西,所以我的程序有效地到此结束,这对我来说没有意义,因为我以前完全这样做过并且它已经工作了。
除此之外,如果您可以通过我的代码看到任何其他问题,指出它们将非常有帮助。
谢谢
编辑-
更改为后我遇到的新问题
if(!again.equalsIgnoreCase("y"))
student++;
}while (again.equalsIgnoreCase ("y"));
它让我现在可以输入内容,但是在我输入 y 之后,它会将下一行打印为
请输入学生 1 的姓名: 请输入考试 1 的分数:
我不知道为什么或需要更改什么来修复它,有什么建议吗?