Erste Schritte Rundungsproblem - Berechnung Notendurchschnitt

johofmann

Mitglied
Einen schönen Sonntag,

ich habe das Glück dieses Semester zum ersten Mal in meinen Leben Java zu erlernen. Bisher ist auch alles gut, nun kommt mein erstes Problem - und zwar beim Runden.

Die Aufgabenstellung ist folgende:
public static double computeGrade(int score, int excellent, int pass)

Sie soll zu einer gegebenen Punktzahl die entsprechende Klausurnote errechnen, abh¨angig von einer Mindestpunktzahl
zum Bestehen (pass) und der Punktzahl ab der die Bestnote vergeben wird (excellent).
Die Noten sollen im deutschen Stufen-System angegeben werden:
nicht bestanden: 5.0
bestanden 4.0
Bestnote 1.0
Werte dazwischen 1.3, 1.7, 2.0 ... 3.7
Die Verteilung der Punkte zu den Noten soll durch lineare Interpolation errechnet werden. Die Notenskala
ist dabei oben durch die 1.0 und unten durch die 4.0 begrenzt (Alle Punktzahlen kleiner als pass ergeben
immer eine 5.0). Mathematische Hilfsfunktionen (z.B. round, max, min aus der Klasse Math) k¨onnen
genutzt werden.
Achtung: Es handelt sich um Notenstufen (insgesamt 11), nicht um gerundete Noten-Werte!

Java:
public static double computeGrade(int score, int excellent, int pass){

if (score >= excellent) {

return 1.0;
}

else if (score < excellent && score > pass){

int mark = ((score-excellent)*(4-1))/(pass-excellent))+1
}

else (score < pass){

return 5.0;
}

if (score == pass){

return 4.0;
}}


Das ist mein Lösungansatz. Bis dahin sollte alles stimmen - Nun sollen wir mit math.round richtig runden.
Mein Problem hierbei, wie runde ich richtig, da ja nur auf x.0/x.3 oder x.7 gerundet werden soll
 

InfectedBytes

Top Contributor
du könntest dir mit mark%1 die nachkommastellen geben lassen und dann per if prüfen.
Java:
double frac = mark%1; // Teil nach dem Komma
int m = (int)mark; // Teil vor dem Komma
if(frac<0.15) mark = m;
else if(frac<0.5) mark = m + 0.3;
else if(frac<0.85) mark = m + 0.7;
else mark = m+1;
 

johofmann

Mitglied
Hey! Echt ein cooler Ansatz

Habe es mal getestet. Es erscheint aber folgendes Problem

Bsp: score 78 somit m= 2.13333 somit frac<0.15
Sprich mark: 2.0

Richtig wäre jedoch 2.3
 

InfectedBytes

Top Contributor
soll denn nicht zum nächstgelegenen gerundet werden? denn 2.1333 ist nunmal näher an 2.0 als an 2.3 dran.
Wenn du immer aufrunden willst, musst du halt die konstanten werte anpassen
 

johofmann

Mitglied
Mhh, die Logik der Zuordnung ist nicht ganz für mich ersichtlich. Ich dachte es wird einfach gerundet.

Wie fügt man den konstante Werte hinzu? Eigentlich sollte lt. Tutor die Lösung durch Runden möglich sein, aber wie du am folgenden Bsp siehst stimmt es nicht...

Java:
 @Test
    public void testComputeGrade2() {
        // test for an exam with limits 50 and 95 (max score 100)

assertEquals(2.3, MyMath.computeGrade(78, 95, 50), 0.01);

// wie beschrieben Ergebnis sind 2.1333 - die Note ist jedoch 2.3
 

InfectedBytes

Top Contributor
die zahlen die ich geschrieben habe sind konstante werte, also einfache literale.
Und weiterhin bleibt die frage offen, ob zum nächsten wert gerundet werden soll (wie in meinem code) oder ob du wirklich immer aufrunden willst.
 

johofmann

Mitglied
Das ist eine gute Frage.
Nehme wir nochmal das Beispiel

(Klausur mit 100Punkten;95=Excellent;50=Pass)
2.1333 Hier muss auf 2.3 gerundet werden
2.3333 Ebenfalls auf 2.3
2.4 auf 2.7
2.7333 auf 3.0

(Klausur mit 60 Punkten;57=Excellent;30=Pass)
1.777 muss auf 2.0
1.666 auf 1.7
1.333 auf 1.3
 

stg

Top Contributor
Ohne deinen ganzen Code gelesen zu haben, einfach mal eine kurze Beschreibung, wie ich vorgehen würde:

- Ist dIe Punktzahl größer/gleich als "excellent", so gib 1.0 zurück
- Ist die Punktzahl kleiner als "pass", so gib 5.0 zurück.
- sonst, ermittele, in die wievielte Notenstufe die Punktzahl fällt
(bestimmte in Abhängigkeit der tatsächlich erzielten Punktzahl eine ganz Zahl k im Bereich von 1 bis 9)
und gib 1,0 + k * 1./3 (gerundet auf eine Nachkommastelle) zurück.
 

stg

Top Contributor
Dass 75 Punkte eine 2.3 ergibt ist schon richtig. Das kann man ja von Hand auch ganz leicht mal eben abzählen.

Dennoch würde ich, wie eben gesagt, nicht direkt die richtige "Note" ausrechnen, sondern berechnen, in welche Notenstufe die Punktzahl fällt. Da kann man leicht auf eine ganze Zahl ab- bzw aufrunden (Jenachdem, wierum du es aufziehst) und dann entsprechend in die Note "umrechnen"
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Rundungsproblem Java Basics - Anfänger-Themen 14
F Winkelfunktion, Rundungsproblem Java Basics - Anfänger-Themen 3
I double (cast) rundungsproblem Java Basics - Anfänger-Themen 8
R Rundungsproblem Java Basics - Anfänger-Themen 3
R Rundungsproblem Java Basics - Anfänger-Themen 5
I File Uploader... Statusanzeige, Berechnung des Status etc. Java Basics - Anfänger-Themen 0
Bugs Bunny Fehlerhafte Berechnung beim erneuten Durchlaufen der Schleife Java Basics - Anfänger-Themen 5
Jamie logische Verknüpfung zur Schaltjahr-Berechnung Java Basics - Anfänger-Themen 30
Stephan_kl Reihenwert-Berechnung, Ergebnis mit vorherigem Ergebnis vergleichen Java Basics - Anfänger-Themen 11
Abraham42 Berechnung der Kühlung Java Java Basics - Anfänger-Themen 12
S Hashcode-Berechnung + ^ Java Basics - Anfänger-Themen 2
J Median-Berechnung von 2D-Teilarrays Java Basics - Anfänger-Themen 56
F Tabelle - Berechnung Rang Java Basics - Anfänger-Themen 2
B Berechnung der Position von Kinderelemente von einem Elternknoten Java Basics - Anfänger-Themen 23
S Berechnung der sleep time ist falsch Java Basics - Anfänger-Themen 46
S Switch-Case zur Berechnung der Einkommensteuer Java Basics - Anfänger-Themen 15
F Berechnung der Rektaszension und Deklination eines Sterns Java Basics - Anfänger-Themen 7
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
V Erste Schritte Pi Berechnung Java Basics - Anfänger-Themen 47
M Berechnung der Reststrecke bei Graphen Java Basics - Anfänger-Themen 1
V Algorithmus zur fortlaufenden Berechnung des duechscjnt Java Basics - Anfänger-Themen 1
B Berechnung zu einer Schleife formen Java Basics - Anfänger-Themen 6
B Berechnung Median mit Methode Java Basics - Anfänger-Themen 7
CptK Methoden Berechnung von Anfangsgeschwindigkeit und Winkel Java Basics - Anfänger-Themen 27
K Erste Schritte Berechnung der Summe zweier Arrays Java Basics - Anfänger-Themen 15
S Erste Schritte Berechnung des Paketportos - Problem/Frage Java Basics - Anfänger-Themen 52
J Gleitkommazahlen, Berechnung von pi Java Basics - Anfänger-Themen 4
J Berechnung liefert falsches Ergebnis Java Basics - Anfänger-Themen 2
kilopack15 Verzweiflung wegen Berechnung mit Multithreading Java Basics - Anfänger-Themen 1
A Die Werte zur Berechnung müssen als Parameter übergeben werden? Java Basics - Anfänger-Themen 7
Salo Berechnung von Winkeln Java Basics - Anfänger-Themen 28
M Restbuchwert Berechnung geht nicht Java Basics - Anfänger-Themen 45
Ghostman1711 Pi berechnung Methode aufrufen Java Basics - Anfänger-Themen 2
L Rekursive Methode zur Berechnung der Potenz q hoch p Java Basics - Anfänger-Themen 17
beatles Operatoren Operatoren - Berechnung Java Basics - Anfänger-Themen 40
K Best Practice Algorithmus für Berechnung von Zahlenreihenfolge Java Basics - Anfänger-Themen 12
N Verzögerte Berechnung "Lazy" Java Basics - Anfänger-Themen 8
S Variablen Vektor zur Berechnung verwenden Java Basics - Anfänger-Themen 4
T Java double berechnung fehler Java Basics - Anfänger-Themen 2
M Berechnung in Java Java Basics - Anfänger-Themen 4
S Berechnung der Arbeitstage in einem Zeitraum Java Basics - Anfänger-Themen 9
E Problem bei rekursiver Berechnung des Binomialkoeffizienten Java Basics - Anfänger-Themen 5
T Iterative Pi Berechnung in Rekursive Java Basics - Anfänger-Themen 2
S Double, int, Berechnung Java Basics - Anfänger-Themen 3
C Nach Berechnung runden und Wert ausgeben Java Basics - Anfänger-Themen 7
E Berechnung für Shop einbinden Java Basics - Anfänger-Themen 8
S Klassen Formel zur Berechnung .... Bitte um Hilfe Java Basics - Anfänger-Themen 7
S Euklid Algorithmus zur Berechnung des GGTs Java Basics - Anfänger-Themen 2
OnDemand Berechnung in die start und paint Methode eines Applets Java Basics - Anfänger-Themen 28
P Schleife zur Berechnung von einer Summe Java Basics - Anfänger-Themen 16
F Berechnung einer linearen Abschreibung Java Basics - Anfänger-Themen 5
E Berechnung von Punkten Java Basics - Anfänger-Themen 4
D Berechnung des Abstandes von zwei Punkten in einem Koordinatensystem Java Basics - Anfänger-Themen 14
A Methoden PI-Berechnung Java Basics - Anfänger-Themen 22
S Erste Schritte Berechnung mit Daten aus CSV und Date Objekt Java Basics - Anfänger-Themen 2
C Programm zur Berechnung der Spur einer Matrix Java Basics - Anfänger-Themen 4
P Pythagoras Baum - Berechnung der Punkte Java Basics - Anfänger-Themen 9
A Erste Schritte Steuer Berechnung, Alters Abhängig Java Basics - Anfänger-Themen 5
T Erste Schritte Berechnung von gerade und ungerade Zahlen Java Basics - Anfänger-Themen 10
J Erste Schritte Berechnung Ratten vermehrung Java Basics - Anfänger-Themen 4
P falsches ergebnis bei einfacher berechnung Java Basics - Anfänger-Themen 3
T Iterative Berechnung einer Satellitenbahn Java Basics - Anfänger-Themen 20
M Java Berechnung mit mehreren Lösungen? Java Basics - Anfänger-Themen 9
D Nullstellen-Berechnung Java Basics - Anfänger-Themen 10
L Fehlermeldung bei falscher Berechnung anzeigen Java Basics - Anfänger-Themen 31
A berechnung multiplikatives inverses Java Basics - Anfänger-Themen 5
J Berechnung des aktuellen Alters auf Basis des Geburtstags Java Basics - Anfänger-Themen 45
J Datentypen Fehler bei Berechnung mit Double und Int-Werten Java Basics - Anfänger-Themen 22
G Berechnung von Winkeln mit Cosinussatz Java Basics - Anfänger-Themen 2
B Arrays verwenden für Berechnung Java Basics - Anfänger-Themen 3
R Merkwürdige Modulo Berechnung Java Basics - Anfänger-Themen 7
B Hausaufgabe Berechnung quadratischer Funktion Java Basics - Anfänger-Themen 16
U Alter Berechnung + sortierung Java Basics - Anfänger-Themen 6
P Berechnung wird nicht durchgeführt Java Basics - Anfänger-Themen 2
D Berechnung von Ostern und Ramadan! Java Basics - Anfänger-Themen 24
N Algorithmus für Berechnung einer Quersumme Java Basics - Anfänger-Themen 9
D Berechnung von Geldausgabe Java Basics - Anfänger-Themen 22
F Berechnung von Kugeln! Java Basics - Anfänger-Themen 9
M rekursive Funktion zur Berechnung der Spiegelzahl Java Basics - Anfänger-Themen 7
S Hausaufgabe: Java-Programm schreiben zur Berechnung von x und y Java Basics - Anfänger-Themen 9
Y Ergebnis einer Berechnung an die Main Methode übergeben Java Basics - Anfänger-Themen 11
Semox Ersten Wert eines Intervalls bei Berechnung einschließen Java Basics - Anfänger-Themen 8
J Logarithmische Berechnung und Arrays Java Basics - Anfänger-Themen 2
B LinkedList - Berechnung des Produkts Java Basics - Anfänger-Themen 6
B Berechnung von Preisen per Java-Programm Java Basics - Anfänger-Themen 27
M Alters berechnung aus Geburtsjahr aus dem Buch Java Basics - Anfänger-Themen 5
O Fehler in der String-Distanz-Berechnung Java Basics - Anfänger-Themen 5
-horn- "Berechnung vorwärts, Optimierung rückwärts?" - Wie würdet ihr das machen? Java Basics - Anfänger-Themen 8
P iterative Berechnung Java Basics - Anfänger-Themen 9
1 Berechnung von PI mithilfe von Buffons Nadelproblem Java Basics - Anfänger-Themen 2
G Berechnung zwei Komplexen Zahlen Java Basics - Anfänger-Themen 34
N Rekursive Berechnung der Höhe eines binären Baumes Java Basics - Anfänger-Themen 4
J Programm für interaktive Berechnung von Temperaturverläufen Java Basics - Anfänger-Themen 9
K Annährende ganzzahlige Berechnung der Wurzel Java Basics - Anfänger-Themen 8
L Berechnung von Perioden Java Basics - Anfänger-Themen 4
D einfach berechnung einer onlinezeit Java Basics - Anfänger-Themen 25
S Euklid Klasse mit Methoden zur Berechnung des ggT Java Basics - Anfänger-Themen 23
G Frage zur Primzahlen berechnung Java Basics - Anfänger-Themen 11
G Berechnung von N-Tageslinien von Aktienkursen Java Basics - Anfänger-Themen 13
G Rekursive Berechnung von n über k schlägt fehl Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben