wie Funktioniert das kann einer mal den code senden?

ZaoDaDong  28.09.2022, 12:48

Soll das nun in Java oder JavaScript gelöst werden?

Rocketbaum27 
Fragesteller
 28.09.2022, 12:52

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
		);
	}
}
Rocketbaum27 
Fragesteller
 28.09.2022, 14:55

Vielen dank

1

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.

Rocketbaum27 
Fragesteller
 28.09.2022, 12:48

Danke für deine Antwort :)

1
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 ...

Woher ich das weiß:Studium / Ausbildung – Abgeschlossenes Studium der Informatik (B.Sc.)
Rocketbaum27 
Fragesteller
 28.09.2022, 12:46

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

0
xxxcyberxxx  28.09.2022, 12:47
@Rocketbaum27
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.

0