Java 如何让程序打印出do while循环中的所有输入?
我正在编写一个名为CreateGradeReport.java的程序。这是一个旨在提示用户输入学生姓名和数字分数的程序。当输入-1时,程序将停止提示用户输入。当输入-1时,将显示成绩报告,其中包含转换为字母成绩的学生姓名和成绩,以及最高和最低成绩以及所有成绩的平均值 这是我的密码:Java 如何让程序打印出do while循环中的所有输入?,java,loops,do-while,Java,Loops,Do While,我正在编写一个名为CreateGradeReport.java的程序。这是一个旨在提示用户输入学生姓名和数字分数的程序。当输入-1时,程序将停止提示用户输入。当输入-1时,将显示成绩报告,其中包含转换为字母成绩的学生姓名和成绩,以及最高和最低成绩以及所有成绩的平均值 这是我的密码: import java.util.*; public class CreateGradeReport { public static void main(String[] args) { Scanner i
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);
}
}
我需要知道如何获得它,这样我就可以打印出我在do-while循环中提供的所有输入。我更愿意在不创建单独的类或使用ArrayList的情况下执行此操作。之所以将-1作为学生名,是因为您首先将-1存储在studentName或studentGrade中退出,因此当您尝试将其打印到控制台时,其中任何一个都必须为-1,您可以在循环条件中轻松看到这一点 要按照我认为您打算的方式执行此操作,将几个学生打印到控制台,您必须将整个主方法封装在一个循环中,但删除内部方法 您可以尝试以下方法:
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.printlnmap 如果不使用任何类型的列表/数组类型结构,这是不可能的。如果有多个输入,您可以将它们存储在哪里?为什么不能使用列表/数组?或者是ArrayList特别是你不能使用的?ArrayList特别是。我可以问一下为什么吗?如果您可以使用其他列表,那么您在实现它时是否有问题,或者您只是在寻找数据结构建议?哦,除非您真的想在输入后立即打印它们?然后,您可以在循环内部打印@christianfoleidesaid@HenryTwist-不需要是列表。set和map都是选项,普通数组也是。你能举个例子说明它应该是什么样子吗?do-while循环是否会从publicstaticvoidmain上方开始?还是就在那之后?我编辑了答案。我理解这一点,因为根据上面@Henry Twist的讨论,您无法使用任何形式的集合数组、地图等的实现,到那时,您别无选择,只能边走边单独打印出来。
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);