Нужна помощь для отображения всех данных массивов с использованием объекта Array (не могу использовать список массивов)

#java #arrays #sorting #constructor #comparator

#java #массивы #сортировка #конструктор #компаратор

Вопрос:

Я создаю школьную систему, в которой отображается весь список классов и учащихся с их оценками и общая оценка **.

но сейчас я действительно застрял. Я могу показать список всех данных в классе, и я действительно не знаю, что теперь делать. Пожалуйста, помогите мне с моим кодом.

В этом коде я использую Array для хранения данных об ученике, оценке, имени класса и количестве классов.

МАССИВЫ ДЛЯ КЛАССА И УЧЕНИКА:-

Класс может хранить до [10 классов], но начальный класс должен содержать минимум 3 класса и не более 10 учеников, может хранить до [20 учеников] и не более, максимальное значение равно 20

В ЭТОМ КОДЕ НЕ ДОЛЖЕН ИСПОЛЬЗОВАТЬСЯ список МАССИВОВ.

= ВЫВОД, КОТОРЫЙ я ХОЧУ ДЛЯ СПИСКА ШКОЛ =

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

 === SCHOOL LISTS ===

1. Class Thunder with Total grade: 146
2. Class Lightning with Total grade: 103.9
3. Class Sunrise with Total grade: 115.5

--------------------
Class: Sunrise
Class quantity: 5

Student1: James Shawn
Grade: 75
Student2: Ali Pole
Grade: 30.5
Student3: Tong Kim
Grade: 10

Total Grade: 115.5
------------------------
Class: Thunder
Class quantity: 5

Student1: Mark Lee
Grade: 65.5
Student2: James Mic 
Grade: 20.4
Student3: James Mic 
Grade: 18.0

Total Grade: 103.9
------------------------
Class: Lightning 
Class quantity: 5

Student1: Luke Kim
Grade: 90
Student2: Noth Shawn
Grade: 44
Student3: Lex Wale
Grade: 12

Total Grade: 146

Do you want to go back to the selection function?
Press Y or N: 
//if yes they will go back to the functionSelection
//if no they will ask users if they want to exit the systems.

Do you want to exit (Y or N): 

//if yes they will exit the systems
//if no they will go back to the functionSelection.
  

МОЙ КЛАСС JAVA PROGRAM
STUDENT: —

 import java.util.Comparator;

public class Student {

    private String studentName;
    private int grade;

    public Student(String studentName, int score) {
        this.studentName = studentName;
        this.grade = grade;
    }

    public String toString() {
        return "nStudent Name: "   studentName   "nGrade: "   grade;
    }

    public String getStudentName() {
        return studentName;
    }

    public int getGrade() {
        return grade;
    }

    public void setStudentName(String studentName) {
        this.studentName = studentName;
    }

    public void setGrade(int grade) {
        this.grade = grade;
    }   
}

//Sorting side
class sortGrade implements Comparator<Student> {

        @Override
        public int compare(Student a, Student b) {
        return (a.getGrade() - b.getGrade());
    }
}
  

CLASS CLASS:-

 public class Class {

    Student[] student;
    private String className;
    private int classQuantity;
    private int totalGrade = 0;
    
    //add student to the class
     public void addNewStudent(String studentName, double grade) {

    }
    
    public double calculateTotalGrade() {

        for (Student students : student) {
            totalGrade  = students.getGrade();
        }
        return Math.round(totalGrade * 10.0) / 10.0;
    }

    public Class(Student[] student,
            String className, int classQuantity) {

        this.student = student;
        this.className = className;
        this.classQuantity = classQuantity;
    }

    public Class(String className, int classQuantity) {

        this.className = className;
        this.classQuantity = classQuantity;
    }

    public String toString() {
        String studentList = " ";

        for (int i = 0; i < student.length; i  ) {
            studentList  = "ntStudent "   (i   1)   ": "   student[i].getStudentName()
                      "ntGrade: "   student[i].getGrade();
        }

        return "nClass Name: "   className
                  "nClass Quantity: "   classQuantity   "n"   studentList;
    }
}
  

ОСНОВНОЙ КЛАСС ДРАЙВЕРА:-

 import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;

public class MainDriver {

    private Object[] a;

    void printSort(Student[] sortList) {
        for (Object sort : a) {
            System.out.print(sort   " ");
        }
        System.out.println();
    }

    public static void main(String[] args) {

        int size = 10;
        Class[] classroom = new Class[size];

        Student[] studentList1 = {
            new Student("Tong Kim", 10),
            new Student("Ali Pole", 30),
            new Student("James Shawn", 75)};

        Student[] studentList2 = {
            new Student("James Mic", 20),
            new Student("Ho Kim", 18),
            new Student("Mark Lee", 65)};

        Student[] studentList3 = {
            new Student("Luke Kim", 90),
             new Student("Noth Shawn", 44),
             new Student("Lex Wale", 12)
        };

        classroom[0] = new Class(studentList1, "Sunrise", 20);
        classroom[1] = new Class(studentList2, "Thunder", 10);
        classroom[2] = new Class(studentList3, "Lightning", 5);

        Scanner input = new Scanner(System.in);
        boolean functionSelection = true;
        
       // Student[] SortList = studentList1;

        while (functionSelection) {

            System.out.println("=== SCHOOL SYSTEM === n");
            System.out.println("[1] Add New Class");
            System.out.println("[2] Exit");

            System.out.print("nChoose a function: ");

            //Check if it is other then number
            if (!input.hasNextInt()) {
                System.out.println(" nChoose the existing number");
                input.nextLine();
                continue;
            }

            int choice = input.nextInt();

            String newClassName, searchClass, newName, addName;
            switch (choice) {
                case 1:
                  
                    //Show School List
                    /*List all class, student, grade and the total grade
                    in ascending*/

                    System.out.println("=== SCHOOL LIST ===");

                   Student[] SortList = studentList1;

                   //Descending Order Arrays
         
                    Comparator<Student> descendingOrder;
                    descendingOrder = Collections.reverseOrder
                    (new sortGrade());

                    Arrays.sort(SortList, descendingOrder);
                    System.out.println(Arrays.toString(SortList)   "n");
                case 2: 
                    System.exit(0);
                    break;
                default:
                    System.out.println(" nChoose the existing number");
            }
        }
    }
}
  

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

1. Конструктор класса Student выдает ошибку. Оценка не присваивается оценке. this.grade = grade означает назначить this.grade = this.grade

2. хорошо, но знаете ли вы, как я могу получить результат

Ответ №1:

Если вы абсолютно не можете использовать ArrayList, тогда ваш единственный другой вариант — повторно инициализировать массив, а затем назначить новый массив вашему исходному указателю. Вы могли бы инкапсулировать эту функциональность в метод, подобный этому:

 String[] push(String[] array, String push) {
    String[] longer = new String[array.length   1];
    for (int i = 0; i < array.length; i  )
        longer[i] = array[i];
    longer[array.length] = push;
    return longer;
}
  

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

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

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

Ответ №2:

Массивы Java не могут быть изменены. Вы не можете добавлять или удалять элементы. Вместо этого используйте ArrayList.

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

1. В этом коде не разрешено использовать Arrayllist, потому что я действительно хочу понять сам массив @ansar