/ / Wie man ein Programm entwirft, das keine parallelen Arrays erstellt - Java, Arrays, Klassen, Methoden

So erstellen Sie ein Programm, das keine parallelen Arrays erstellt - Java, Arrays, Klasse und Methoden

Ich arbeite an einer Aufgabe in meinem Java-Lehrbuch, die besagt:

Ändern Sie das GradeRange-Programm (Listing 6).5) aus diesem Kapitel, damit keine parallelen Arrays verwendet werden. Entwerfen Sie stattdessen eine neue Klasse mit dem Namen Grade, in der sowohl die Notenzeichenfolge als auch ihr Cutoff-Wert (der niedrigste Score für diese Note) gespeichert sind. Legen Sie beide Werte mit dem Grade-Konstruktor und fest Stellen Sie Methoden zur Verfügung, die die Werte zurückgeben: Füllen Sie in der Hauptmethode des neuen GradeRange-Programms ein einzelnes Array mit Grade-Objekten und erzeugen Sie dann die gleiche Ausgabe wie im ursprünglichen GradeRange-Programm.

Hier ist das GradeRange-Programm:

//********************************************************************
//  GradeRange.java       Author: Lewis/Loftus/Cocking
//
//  Demonstrates the use of an array of String objects.
//********************************************************************

public class GradeRange
{
//-----------------------------------------------------------------
//  Stores the possible grades and their numeric lowest value,
//  then prints them out.
//-----------------------------------------------------------------



public static void main (String[] args)
{
String[] grades = {"A", "A-", "B+", "B", "B-", "C+", "C", "C-",
"D+", "D", "D-", "F"};

int[] cutoff = {95, 90, 87, 83, 80, 77, 73, 70, 67, 63, 60, 0};

for (int level = 0; level < cutoff.length; level++)
System.out.println (grades[level] + "t" + cutoff[level]);


}
}

Ich verstehe nicht in der Frage, wenn es heißt:

... speichert sowohl den Notenstring als auch seinen Cutoff-Wert ... Setzt beide Werte mit dem Grade-Konstruktor ...

Hier ist mein Beginn des Unterrichts:

public class Grade
{
public Grade (String[] grades, int[] cutoff)
{

Ich weiß nicht, wie ich die Notenfolge speichern würdeund in den Konstruktor abschneiden, wenn die Zuweisung dies verlangt. Ich weiß auch nicht, wie ein Array aussehen würde, das nicht parallel ist. Ich schätze, meine letzten Fragen sind, wie ich das Programm entwickeln würde (welche Methoden sind zu erstellen ...)?

Füllen Sie ein einzelnes Array mit Notenobjekten

AUSGABE:

A   95
A-  90
B+  87
B   83
B-  80
C+  77
C   73
C-  70
D+  67
D   63
D-  60
F   0

Antworten:

2 für die Antwort № 1

Sie sollen eine Liste mit Notenobjekten erstellen, anstatt zwei Arrays zum Speichern der Note und der Cutoffs beizubehalten. Sie können dies folgendermaßen tun:

public class Grade{
//Replace these two with getters and setters if you know what they are
public String grade;
public int cutoff;

public Grade(String gradeConstructorArg, int cutoffConstructorArg){
this.grade = gradeConstructorArg;
this.cutoff = cutoffConstructorArg;
}
}

Und dann machen Sie einfach eine Reihe von Noten in der Hauptmethode wie:

 public static void main (String[] args){
Grade[] grades = {new Grade("A", 95), new Grade("A-", 90)}; //Add more

for (int i = 0; i < grades.length; i++)
System.out.println (grades[i].grade + "t" + grades[i].cutoff);
}

3 für die Antwort № 2

Ihre Grade Klasse wie gezeigt sieht aus wie es noch zwei parallele Arrays enthalten wird, aber nur verstecken.

Was gefragt wird, ist eine Klasse wie

class Grade
{
// TODO add all the correct constructors, getters and setters
private String grade;
private int cutoff;
}

Anschließend müssen Sie ein Array von erstellen und speichern Grade Instanzen.


2 für die Antwort № 3

Vergessen Sie nicht, dass die Frage auch erforderlich istdass Sie Getter-Methoden für Ihre Grade-Klasse erstellen, um die Werte für grade und cutoff zu erhalten. Die Implikation ist, dass Sie grade und cutoff innerhalb der Klasse als privat deklarieren und die public getter-Methoden verwenden sollten, um Folgendes abzurufen:

public class Grade{

private String grade;
private int cutoff;

public Grade(String grade, int cutoff){
this.grade = grade;
this.cutoff = cutoff;
}

public String getGrade(){
return grade;
}

public int getCutoff(){
return cutoff;
}
}

Stellen Sie dann sicher, dass Sie sie abrufen, wenn auf Mr D verwiesen wird, und ändern Sie die Ausgaberoutine wie folgt:

for (int i = 0; i < grades.length; i++)
System.out.println(grades[i].getGrade() + "t" + grades[i].getCutoff());