Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Rechner2 {
- //(c) Team LoL
- public static void main(String[] args) {
- System.out.println("Bitte die gewünschte Rechenart wählen:");
- System.out.println("+ , - , * (oder x) , / , %");
- String s;
- char auswahl,a;
- a = 'a';
- int i = 0;
- boolean eingabe = true;
- while(eingabe)
- {
- //Rechenart einlesen
- eingabe = false;
- s = IO.readLine();
- a = IO.charAt(s,0);
- if (a != '+' && a != '-' && a != '*' && a != 'x' && a != '/' && a != '%')
- {
- if(i == 3)
- {
- System.out.println("Ich hab keine Lust mehr, danke und tschüß");
- System.exit(0);
- }
- System.out.println("Bitte nochmal versuchen!");
- i++;
- eingabe = true;
- }
- }
- auswahl = a;
- //Anzahl der Aufgaben einlesen
- System.out.println("Wie viele Aufgaben?");
- int n = IO.readInt();
- int x, y;
- double ergebnis,time;
- long time1, time2,zeitdifferenz,zeit;
- int wans = 0, fans = 0;
- time1 = System.currentTimeMillis();
- for (int j = 0; j < n; ++j)
- {
- //Aufgabe erstellen
- x = IO.randomNumber(1,100);
- y = IO.randomNumber(1,100);
- //untere Grenze auf 1 gesetzt, damit es beim Dividieren keine Probleme gibt
- System.out.print(x + " " + auswahl + " " + y + " = ");
- ergebnis = IO.readDouble();
- boolean istRichtig = false;
- //Ueberpruefen ob das Ergebniss korrekt ist
- switch(auswahl)
- {
- case '+':
- istRichtig = (ergebnis == (double)(x+y));
- break;
- case '-':
- istRichtig = (ergebnis == (double)(x-y));
- break;
- case '*': case 'x':
- istRichtig = (ergebnis == (double)(x*y));
- break;
- case '/':
- /*Anmerkung: in der vorliegenden Form ist Division leicht sinnlos
- Man kann zum einen nur wenige Lösungen wirklich eingeben
- (wie soll man zB 1/3 als Kommazahl eingeben?)
- Daraus folgt, dass man die Lösungen als Bruch eingeben muss
- Hierbei reicht es vollkommen den ungekürzten Bruch, also x/y einzugeben,
- genauso wie er in der Aufgabenstellung steht.
- Um eine ordentliche Divisionsaufgabe hinzukriegen müsste man vollständig
- gekürzte Brüche fordern und den eingegebenen String dann in Zähler und Nenner zerlegen,
- etc.
- Da das allerdings nicht gefordert und mit unserem bisherigen Vorlesungs-
- und Übungswissen auch nur sehr umständlich bis unschön (für den User) umsetzbar ist
- lassen wir diese, wenn auch sinnlose, Division so stehen.
- Wenn der Kunde es so haben will, nicht unser Problem. xD */
- auswerten(ergebnis == (double)(x/y));
- break;
- case '%':
- istRichtig = (ergebnis == (double)(x%y));
- break;
- }
- if(isRichtig)
- {
- //Wenn Ergebniss richtig
- System.out.println("Richtig!");
- wans++;
- }
- else
- {
- //Wenn Ergebniss falsch
- System.out.print("Gehe in die Grundschule. Gehe nicht über los. ");
- System.out.println("Ziehe nicht 200€ Hartz 4 ein.");
- fans++;
- }
- System.out.println("");
- }
- time2 = System.currentTimeMillis();
- zeitdifferenz = time2 - time1;
- zeit = zeitdifferenz / 100;
- time = zeit / 10.0;
- System.out.println("Zeit: " + time + " Sekunden");
- System.out.println("Richtige Antworten: " + wans);
- System.out.println("Falsche Antworten: " + fans);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement