如何解决如何让我的程序从 do while 循环中打印出我的所有输入?
我正在编写一个名为 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 的学生姓名以及输入的最终学生成绩的成绩。这是我一直收到的输出:
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 的情况下执行此操作。
解决方法
学生姓名获得 -1 的原因是因为您首先将 -1
存储在 studentName
(或 studentGrade
)中,因此您正在尝试将这些打印到控制台,它们中的任何一个都必须是 -1
,您可以在循环条件中轻松看到这一点。
要做到这一点(我认为您打算这样做,将几个学生打印到控制台),您必须将整个 main 方法包装在一个循环中,但删除内部方法。
你可以尝试这样的事情:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
do {
System.out.println("Enter -1 to exit: ");
int i = scanner.nextInt();
if (i == -1) {
exit = true;
}
..
get student specific input here
..
process like you have done before
..
print results
} while (!exit)
}
,
使用地图,这对您的情况很有意义。一个地图,其中键是学生姓名,值是学生成绩。
import java.util.*;
public class CreateGradeReport {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Mpa<String,Integer> map = new HashMap() ;
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();
map.put(studentName,student Grade) ;
}
while(!studentName.equals("-1") && studentGrade != -1);
最后只做System.out.println(map);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。