Как вы отображаете входные данные, введенные через цикл do while в Java?

#java #loops #do-while

Вопрос:

Я работаю над программой, которая запрашивает у пользователя неопределенное количество имен учащихся и количество оценок. Предполагается, что программа перестанет запрашивать у пользователя ввод, когда пользователь вводит -1. Как только это произойдет, отобразится отчет об оценках, показывающий оценку каждого ученика, количество баллов mimimum, максимальное количество баллов и среднее значение.

Вот пример того, как это должно выглядеть:

 Enter the student's name or [-1] to quit: Victoria T.
Enter the student's grade or [-1] to quit: 88
Enter the student's name or [-1] to quit: Jared S.
Enter the student's grade or [-1] to quit: 93
Enter the student's name or [-1] to quit: Jaheem
Enter the student's grade or [-1] to quit: 75
Enter the student's name or [-1] to quit: -1

Class Grading Report

Victoria T.: B
Jared S.: A
Jaheem: C

Minimum: 75.0
Maximum: 93.0
Average: 64.0
 

До сих пор я выяснял, как собирать входные данные с помощью цикла do-while, но теперь я пытаюсь понять, как распечатать все введенные данные. Я знаю, что есть и другие факторы, такие как вычисление максимального и минимального чисел, а также преобразование числовых оценок в буквенные, но я просто хочу выяснить, как распечатать вводимые данные.

Вот мой код до сих пор:

 import java.util.*;
public class CreateGradeReport {

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    String studentName = "";
    int studentGrade = 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") amp;amp; studentGrade != -1);
    }
}
 

Любая помощь в этом будет весьма признательна. Спасибо.

Комментарии:

1. Вы должны быть в состоянии использовать System.out.print / println точно так же, как вы делаете для приглашения. Возможно, с помощью a String.format для управления форматированием выходных данных.

Ответ №1:

Сначала вам нужно будет сохранить введенные данные в подходящей структуре данных. Вы можете создать отдельный класс, содержащий поля для имени и оценки учащегося следующим образом:

 public class StudentDetails {

        public String studentName;
        public int studentGrade;

        public StudentDetails (String studentName , int studentGrade){
            this.studentName  = studentName;
            this.studentGrade  = studentGrade;
        }       
    }
 

Тогда вы, возможно, сможете использовать список массивов этого объекта, чтобы сохранить все ваши данные таким образом:

 import java.util.*;
public class CreateGradeReport {

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    String studentName = "";
    int studentGrade = 0;
    public ArrayList<StudentDetails> studentsDetailsList= new ArrayList<>();
    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;
            }
        // Add your data by invoking the constructor of your newly created
        // class above and add it to the list.
        studentsDetailsList.add(new StudentDetails(studentName, studentGrade)); 
        String dummy = input.nextLine();
        }
    while(!studentName.equals("-1") amp;amp; studentGrade != -1);
    }
    
    // Print your data from this list
    for(StudentDetails sd : studentsDetailsList){
     System.out.println(sd.studentName   ", "   sd.studentGrade);
    }
}
 

Счастливого кодирования!

Комментарии:

1. Есть ли способ сделать это без использования списка массивов или отдельного класса?