wie Funktioniert das kann einer mal den code senden?
1) Nach Eingabe der max. Punktzahl und der erreichten Punktzahl die Note errechnet und sowohl als Zahl als auch als Text ausgegeben werden. Dabei gilt das unten abgebildete Notenschema. Vor der Berechnung sind die beiden Eingaben noch auf Gültigkeit zu überprüfen.
unter
20 %
ab
20 %
ab
41 %
ab
56 %
ab
71 %
ab
86 %
Note
6
5
4
3
2
1
Text
ungenügend
mangelhaft
ausreichend
befriedigend
gut
sehr gut
Die errechnete Note soll als Zahl und als Text augegeben werden.
Soll das nun in Java oder JavaScript gelöst werden?
java editor. Habe gerade erst damit angefangen.
3 Antworten
Dafür bietet sich ein Enum an, aber man kann es natürlich auch in einer normalen Klasse implementieren.
import java.util.Arrays;
public enum Note {
SEHR_GUT(0.86, 1, "sehr gut"),
GUT(0.71, 2, "gut"),
BEFRIEDIGEND(0.56, 3, "befriedigend"),
AUSREICHEND(0.41, 4, "ausreichend"),
MANGELHAFT(0.2, 5, "mangelhaft"),
UNGENUEGEND(0.0, 6, "ungenügend");
double prozent;
int note;
String bezeichnung;
// Ein paar Testfälle
public static void main(String[] args) {
printNote(10, 45);
printNote(40, 45);
printNote(1, 13);
printNote(14, 24);
}
// Standardkonstruktor
private Note(double prozent, int note, String bezeichnung) {
this.prozent = prozent;
this.note = note;
this.bezeichnung = bezeichnung;
}
// Funktion, um die Note nur zu berechnen
public static Note calculateNote(double punkte, double maxPunkte) {
// Fehlerüberprüfungen
if (punkte < 0 || maxPunkte <= 0)
throw new IllegalArgumentException("punkte und maxPunkte müssen größer als 0 sein, aber waren: punkte = " + punkte + ", maxPunkte = " + maxPunkte);
if (punkte > maxPunkte)
throw new IllegalArgumentException("punkte darf nicht größer als maxPunkte sein. punkte = " + punkte + ", maxPunkte = " + maxPunkte);
// Berechnung der Note
return Arrays
.stream(Note.values())
.filter(note -> (punkte / maxPunkte) >= note.prozent)
.findFirst()
.get();
}
// Funktion, um die Note zu berechnen und auszugeben
public static void printNote(double punkte, double maxPunkte) {
Note note = calculateNote(punkte, maxPunkte);
System.out.printf(
"%.1f von %.1f Punkten sind %.2f%%. Das ist die Note %d (%s).%n",
punkte,
maxPunkte,
(punkte / maxPunkte) * 100,
note.note,
note.bezeichnung
);
}
}
0.) Du schaust, ob die Eingaben gültig sind. Sprich nicht-negativ (oder so ähnlich) und maximale Punktzahl größer als erreichte Punktzahl.
1.) Du berchechnest die Prozentzahl der Punkte.
2.) In einem Array mit sechs Einträgen hast du die Grenzwerte gespeichert, ab denen es die jeweilige Note gibt. Du iterierst durch den Array, bis du die passende Note findest. Achte auf die verwendung des richtigen Vergleichoperators.
3.) Sobald du die passende Note hast, kannst du dir die Text-Version mittels des Indexes aus einem bereits passend vorbereiteten Array holen.
4.) Zum Schluss gibst du beides aus.
wie Funktioniert das
Prinzipiell, indem du eben den erreichten Prozentsatz erreichnest und dann mithilfe von Bedingungen die passende Ausgabe machst ...
kann einer mal den code senden?
Nein, das macht hoffentlich keiner. Das klingt stark nach Hausaufgabe und benötigt nur Grundlagenwissen. Statt zu schreiben "Macht mal für mich", gib doch Ansätze und Probleme bekannt ...
Die Sache ist die mein Lehrer kann net erklären und niemand kapiert das
Dann müsst ihr den Stoff halt mit dem Material selbst erarbeiten.
Die Sache ist die mein Lehrer kann net erklären und niemand kapiert das. Aber trotzdem danke für die Antwort, habe eigentlich keine erwartet XD