#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