Erste Schritte Frage eines absoluten Anfängers

Doriann

Neues Mitglied
Guten Tag zusammen,

ich versuche gerade folgende Aufgabenstellung zu lösen:

Vorgegeben ist das Programm SchuelerRechentest.java, das zwei Zufallszahlen generiert. Ergänzen Sie es so, dass daraus ein kleines Testprogramm für die Rechenfähigkeiten eines Grundschülers wird.
  • Lesen Sie die Eingabe des Schülers ein.
  • Vergleichen Sie beide miteinander.

mein Code:

Java:
import java.util.Scanner;

public class SchuelerRechentest {
   
    public static void main(String[] args) {
       
        Scanner tastatur = new Scanner(System.in);

        // Zwei Zufallszahlen zwischen 0 und 10 mit einer Nachkommastelle generieren
        double a = Math.round(Math.random() * 100) / 10.0;
        double b = Math.round(Math.random() * 100) / 10.0;
        double summe = a + b;

        System.out.print(a + " + " + b + " = ");
        System.out.println("Wie ist das Ergebnis?");
       
        // Eingabe des Ergebnisses durch den Benutzer
        double summeSchueler = tastatur.nextDouble();

        // Überprüfung, ob das eingegebene Ergebnis korrekt ist
        boolean richtigesErgebnis = summe == summeSchueler;

        // Ergebnis ausgeben
        System.out.println("Ist das Ergebnis richtig? " + richtigesErgebnis);

    }
}

Wenn ich die gefragte Kommazahl mit einem "." angebe bekommen ich einige Exceptions als Fehlermeldung.
Wenn ich sie mit einem "," angebe bricht das Programm ab und die letzte Ausgabe wird nicht angezeigt.

Ich hatte ursprünglich beim Scanner noch den Delimiter. Da ich gelesen hatte, dass dieser bei Double zu Problemen führen kann hab ich die Zeile gelöscht.

Über Hilfe würde ich mich sehr freuen, da ich mitlerweile 2 Stunden versuche das Problem zu finden.

Schöne Grüße

Dorian
 
Zuletzt bearbeitet von einem Moderator:

KonradN

Super-Moderator
Mitarbeiter
Hier wäre erst einmal wichtig, dass Du immer die Details mitteilst. Also wenn Du Exceptions bekommst, dann solltest Du diese auch zeigen.

Bezüglich des Codes sehe ich zwei Punkte:

a) Das Format. Wie Zahlen formatiert werden, hängt von den Regionalen Einstellung ab. Wie nutzen in Deutschland das , aber England, USA und co nutzen z.B. den Punkt. Scanner sollte die lokalen Einstellungen nutzen, daher sollten die Zahlen mit Komma eingegeben werden (So du Deutschland als Region eingestellt hast).
Das könntest Du aber auch setzen, aber die Frage ist, ob das sinnvoll ist. Es ist halt unschön, dass Du derzeit bei der Anzeige die Einstellung nicht hast (also den . hast) aber bei der Eingabe wird es berücksichtigt.

Die Anzeige könnte man anpassen mit NumberFormat aber für die Aufgabe ist das erst einmal nicht releant.

b) Vergleich von double Zahlen
double Zahlen sind ja im dualen System gespeichert aber Du gibst Zahlen im dezimalen System an. Das führt schon zu Ungenauigkeiten. Das kann zu Fehlern führen. Ich habe einfach einmal den Code ergänzt um die Ausgabe von summe und summeSchueler und folgende Ausgabe erzeugt:
Code:
3.7 + 3.6 = Wie ist das Ergebnis?
7,3
7.300000000000001
7.3
Ist das Ergebnis richtig? false

Du erkennst also neben der Aufgabe meine Eingabe (mit einem Komma, da Deutsche Einstellungen)
Dann kommt die berechnete Summe ... und die weicht tatsächlich ab.
Die Eingabe noch einmal - die ist also richtig aufgenommen worden.
Und dann ist das Ergebnis natürlich falsch.

Double Zahlen vergleicht man also über die Differenz - die muss unter einer gewissen Schwelle sein.
Also ist erst einmal die Frage, was für eine Abweichung wir akzeptieren können. Das nennt man oft epsilon und das könnten wir auf 0.00001 setzen oder so. Die Prüfung wäre dann statt dem Vergleich mit == ein:
Math.abs(summe - summeSchueler) < epsilon

Ich hoffe, auf die Schnell reicht diese Erläuterung erst einmal aus. Wenn wir etwas vertiefen sollen, dann sag einfach Bescheid.
 

Oneixee5

Top Contributor
// Zwei Zufallszahlen zwischen 0 und 10 mit einer Nachkommastelle generieren
Bevor ich hier im Beispiel mit double hantiere, würde ich ganze Zufallszahlen (int) zwischen 0..100 verwenden und erst bei der Ausgabe des Ergebnisses durch 10 teilen. Die Eingabe würde ich ebenfalls in int umwandeln nachdem sie mit 10 multipliziert wurde. Somit wäre auch ein Vergleich mit == möglich.
 

Doriann

Neues Mitglied
Vielen Dank für die ausführlichen Antworten. Ich werde den Code später dementsprechend anpassen und gebe dann nochmal eine Rückmeldung.

Ich hatte mir natürlich die Forenregeln erst im Anschluss des Posts durchgelesen. Bei meinen nächsten Beiträgen werde ich die Vorgaben beachten.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Frage zur ermittlung eines doppelte Paars aus Sotieralgorithmus Java Basics - Anfänger-Themen 4
T Erste Schritte Frage zur Initialisierung eines Mehrdimensionalen Arrays Java Basics - Anfänger-Themen 3
G Long und Frage zum Speicherplatz eines Arrays Java Basics - Anfänger-Themen 7
J Erzeugung eines Vector-Objekts - Frage zum Typ Java Basics - Anfänger-Themen 3
A Frage zu Beispiel eines Dekorierers von InputStream Java Basics - Anfänger-Themen 4
C Methoden Frage zu Verständnis eines Beispiels Java Basics - Anfänger-Themen 3
M Frage zum Aufruf eines Applets aus einer HTML - Datei Java Basics - Anfänger-Themen 3
0 Frage zu Architektur: Server eines kleines Spiels Java Basics - Anfänger-Themen 4
L Frage zur Ausgabe eines gesetzten GregorianCalendar Datums Java Basics - Anfänger-Themen 4
E Verständnis frage zum return wert eines Arrays Java Basics - Anfänger-Themen 7
M Frage zum Ablauf eines Threads Java Basics - Anfänger-Themen 5
M Frage zu einem Parameter Eingabe eines programms Java Basics - Anfänger-Themen 3
H Frage zur Ausgabe eines Programms Java Basics - Anfänger-Themen 3
G Frage bezüglich eines Variablenscopes Java Basics - Anfänger-Themen 4
E Frage zu Umlauten ä, ü, ö, ß / Ausgeben eines Arrays Java Basics - Anfänger-Themen 14
J Frage zum Quellcode - Zusammhänge und Ablauf. Java Basics - Anfänger-Themen 2
Zrebna Frage zu Test-Driven Development (TDD) Java Basics - Anfänger-Themen 3
I Frage Thymeleaf -> Fehler ignorieren und mit "" ersetzen? Java Basics - Anfänger-Themen 15
I Frage Thymeleaf -> Prefix / Suffix ändern? Java Basics - Anfänger-Themen 11
D Rekursions Probleme / frage Java Basics - Anfänger-Themen 4
T Frage zu Parse Java Basics - Anfänger-Themen 2
H Frage an die Profis Java Basics - Anfänger-Themen 4
J Eine konzeptionelle Frage zu OOP Java Basics - Anfänger-Themen 3
P Frage zu Rekursion und Backtracking Java Basics - Anfänger-Themen 2
H Frage zur Ausgabe Java Basics - Anfänger-Themen 4
H Frage zu arithmetischen Operationen Java Basics - Anfänger-Themen 20
F Kurze Frage zu replace() Java Basics - Anfänger-Themen 19
JavaSchmecktLecker Polymorphie Frage zur Methodenüberschreibung Java Basics - Anfänger-Themen 21
J Frage zu einem "Taschenrechner" code Java Basics - Anfänger-Themen 9
B Erste Schritte Frage zu Instanzierung und Referenzen Java Basics - Anfänger-Themen 8
DoubleM Runtime.getRuntime().exec Frage Java Basics - Anfänger-Themen 2
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
O Frage: Formaler Typbezeichner? Java Basics - Anfänger-Themen 3
I BlueJ Queue Frage für Klausur Java Basics - Anfänger-Themen 2
N Verständnis Frage zu Variablen Java Basics - Anfänger-Themen 3
N Spezielle frage zum Comparator Java Basics - Anfänger-Themen 6
L Frage zum Array Java Basics - Anfänger-Themen 1
A Frage zum UML Design Java Basics - Anfänger-Themen 1
I Hilfe bei Klausur Frage Java Basics - Anfänger-Themen 8
izoards Drucken Frage zu FAQ Beitrag Java Basics - Anfänger-Themen 2
J Frage zu meinem Code (OOP) Java Basics - Anfänger-Themen 4
sserio Split() -> Regex Frage. Java Basics - Anfänger-Themen 7
A OCA Study Guide: 2. Frage aus Kapitel 3 Java Basics - Anfänger-Themen 9
sserio Date Library Frage Java Basics - Anfänger-Themen 9
Max246Sch Frage zu Währungsrechner Code Java Basics - Anfänger-Themen 2
sserio Frage zu HashMaps Java Basics - Anfänger-Themen 20
sserio Frage zu Threading - Multithreading Java Basics - Anfänger-Themen 2
sserio Frage zu Lambda Ausdrücken Java Basics - Anfänger-Themen 7
sserio Frage zu BigInteger Java Basics - Anfänger-Themen 1
D Frage bzgl. Enum-Handhabung Java Basics - Anfänger-Themen 16
xxx12 Frage Java Basics - Anfänger-Themen 2
I Generelle Frage zu Mikroservices (Spring Boot?), Docker... Java Basics - Anfänger-Themen 7
R Frage zu Methoden (Rückgabewert u. ohne.) Java Basics - Anfänger-Themen 2
A Frage zur programmierung Java Basics - Anfänger-Themen 12
M Frage zur Methode split der Klasse String Java Basics - Anfänger-Themen 32
R Input/Output Frage zu Java IO Java Basics - Anfänger-Themen 6
M Frage zu printWriter Java Basics - Anfänger-Themen 5
C Frage zu OLSMultipleLinearRegression Java Basics - Anfänger-Themen 31
KogoroMori21 Frage zum Euklidischen Algorithmus Java Basics - Anfänger-Themen 11
S Verständnis-Frage zu einer HÜ? Java Basics - Anfänger-Themen 1
F Frage betreff Programm mit dem man C++-Code in JAVA-Code übersetzen lassen kann Java Basics - Anfänger-Themen 2
L Frage zur Ticket Maschine Java Basics - Anfänger-Themen 1
J Frage zu OOP-Klassendiagramm Java Basics - Anfänger-Themen 8
OSchriever Frage zu Compiler Java Basics - Anfänger-Themen 8
H Frage zu Throw Exception Java Basics - Anfänger-Themen 2
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
Bademeister007 Hallo Leute ich hab eine Frage zur ArrayList Java Basics - Anfänger-Themen 8
F Frage betreff Programmierbücher zu Lagerverwaltung als Konsolenprogramm Java Basics - Anfänger-Themen 3
dieter000 Kurze Frage kann mir ejmand kurz diesen Code erklären, bzw wie man die zeilen erklärt und so Java Basics - Anfänger-Themen 1
I String.split regex Frage Java Basics - Anfänger-Themen 2
N Best Practice Frage zum MVC-Pattern Java Basics - Anfänger-Themen 2
dieter000 Frage zu einem Beispiel... Java Basics - Anfänger-Themen 5
J Frage zum Loggen Java Basics - Anfänger-Themen 18
J Methoden Frage: Array-Werte in anderer Methode ändern Java Basics - Anfänger-Themen 4
Zrebna Frage zum "Referenzen-konzept" in Java Java Basics - Anfänger-Themen 8
JD_1998 Array-Position aus einer Methode in einer anderen ausgeben (Kurze Frage) Java Basics - Anfänger-Themen 2
marcooooo Frage zu bestimmten Beispiel Java Basics - Anfänger-Themen 31
NeoLexx equals()-Methode Verständnis Frage anhand Code Beispiel Java Basics - Anfänger-Themen 22
N Input/Output Eine Frage über system.out.println. Java Basics - Anfänger-Themen 10
B Erste Schritte Learning Coding (!) Frage an erfahrene Programmierer. Java Basics - Anfänger-Themen 23
M konzeptuelle Frage: In welcher Klasse definiert man am Besten Methoden, die die Kommunikation mit dem User regeln? Java Basics - Anfänger-Themen 8
B Frage zum Code verständnis im Resultat Java Basics - Anfänger-Themen 10
C Exception-Frage Java Basics - Anfänger-Themen 3
J Eine Frage zur Schreibweise == ? : Java Basics - Anfänger-Themen 3
S Frage des Designs Java Basics - Anfänger-Themen 1
JavaTalksToMe Extends/Implements Frage Java Basics - Anfänger-Themen 3
pkm Frage zu Servletfunktion Java Basics - Anfänger-Themen 0
B Frage zur Währungsumrechnung Java Basics - Anfänger-Themen 3
S Allgemeine Frage über Generics und Vererbungen Java Basics - Anfänger-Themen 5
Kirby.exe Frage zur Verwendung von Interfaces Java Basics - Anfänger-Themen 6
D Frage zu Strings einer Exception Java Basics - Anfänger-Themen 4
L Wie frage ich ab, ob in einem Array, Werte doppelt vorkommen? Java Basics - Anfänger-Themen 4
D Frage zur IDE IntelliJ IDEA Java Basics - Anfänger-Themen 6
H Frage zum 2d Array Java Basics - Anfänger-Themen 1
N Frage zum Newton-Fraktal Java Basics - Anfänger-Themen 1
H Frage zu interfaces Java Basics - Anfänger-Themen 1
J Frage dazu Variablen klassenübergreifend zu verändern Java Basics - Anfänger-Themen 22
I Frage zu SkipList Java Basics - Anfänger-Themen 4
G Frage zu JScrollPane Java Basics - Anfänger-Themen 12
Kirby.exe Allgemeine Frage Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben