【发布时间】:2021-07-06 23:04:46
【问题描述】:
我正在编写一个名为 CreateGradeReport.java 的程序。这是一个旨在提示用户输入学生姓名和数字成绩的程序。当输入“-1”时,程序将停止提示用户输入。输入 -1 时,将显示成绩报告,其中包含学生姓名和成绩(转换为字母成绩),以及最高和最低成绩以及所有成绩的平均值。
这是我的代码:
import java.util.*;
public class CreateGradeReport {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
String studentName = "";
int studentGrade = 0;
int count = 0;
int sum = 0;
int min = 100;
int max = 0;
do {
System.out.print("\nEnter the student's name or [-1] to quit: ");
studentName = input.nextLine();
if (studentName.equals("-1")){
break;
}
System.out.print("\nEnter the student's grade or [-1] to quit: ");
studentGrade = input.nextInt();
if(studentGrade == -1){
break;
}
String dummy = input.nextLine();
}
while(!studentName.equals("-1") && studentGrade != -1);
System.out.println("-----------------------");
System.out.println("Class Grading Report");
System.out.println("-----------------------");
if(studentGrade >= 90) {
System.out.println(studentName + ": A");
}
else if(studentGrade >=80 && studentGrade < 90) {
System.out.println(studentName + ": B");
}
else if(studentGrade >=70 && studentGrade < 80) {
System.out.println(studentName + ": C");
}
else if(studentGrade >= 60 && studentGrade < 70){
System.out.println(studentName + ": D");
}
else {
System.out.println(studentName + ": F");
}
if (studentGrade < min) {
min = studentGrade;
}
if (studentGrade > max) {
max = studentGrade;
}
count++;
sum += studentGrade;
System.out.println("Minimum: " + min);
System.out.println("Maximum: " + max);
System.out.println("Average: " + sum/count);
}
}
我的所有设置都正确,除了一件事:我无法单独打印所有学生的姓名和成绩。每次我运行程序时,我都会得到 -1 的学生姓名以及输入的最终 studentGrade 的成绩。这是我收到的输出:
Enter the student's name or [-1] to quit: Shane B.
Enter the student's grade or [-1] to quit: 99
Enter the student's name or [-1] to quit: Megan B.
Enter the student's grade or [-1] to quit: 88
Enter the student's name or [-1] to quit: -1
-----------------------
Class Grading Report
-----------------------
-1: B
Minimum: 88
Maximum: 88
Average: 88
我需要知道如何获取它,以便我可以打印出我在 do while 循环期间提供的所有输入。我宁愿这样做而不创建单独的类或使用 ArrayList。
【问题讨论】:
-
不使用任何列表/数组类型的结构,这是不可能的。如果有多个输入,您可以将它们存储在哪里?为什么不能使用列表/数组?或者是
ArrayList具体是你不能用的? -
ArrayList 具体来说。
-
请问为什么?如果您可以使用其他列表,那么您在实现它时是否有问题,或者您只是在寻找数据结构建议?
-
哦,除非您真的想在输入它们后立即打印它们?然后你可以像@christianfoleide 所说的那样在循环内打印
-
@HenryTwist - 不需要是一个列表。 set 和 map 也是选项,普通数组也是。