richtiges Ergebnis zählen und übergeben?

Status
Nicht offen für weitere Antworten.

mobile

Bekanntes Mitglied
Hi,
habe ne kleine Frage.
In der Methode hier:
Code:
void numberadd() {
	      BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));
	      String eingabeZeile;
	      int anzahl;
	      try {
	         System.out.println("Wie viele Aufgaben willst du machen?");
	         eingabeZeile = eingabe.readLine(); //Eingabe Zeile wird eingelesen
	         StringTokenizer tokens = new StringTokenizer(eingabeZeile);
	         anzahl = Integer.parseInt(tokens.nextToken()); 
	         for(int i=0; i<=anzahl; i++) {
	            if(i != anzahl) {
	               CalculationMethods plus = new CalculationMethods();
	               plus.add();      
	            }
	            else if(i == anzahl) {
                        //HIER WIRD ANZAHL AUSGELESEN IN DIE KLAMMERN SOLLEN JETZT RICHTIGE
	            	System.out.println("Du hast von "+anzahl + " Aufgaben () richtig geloest."+"\n");
	            	System.out.println("Was moechtest du jetzt tun?");
	            	StartingScreen run = new StartingScreen();
	            	run.start();   
	            }
	         }
	      }
	      catch(IOException e) {
	         System.out.println("Fehler bei der Eingabe");
	      }
	      catch(NoSuchElementException e) {
	         System.out.println("Zuwenig Werte eingegeben");
	      }
	      catch(NumberFormatException e) {
				System.out.println("Bitte Ganzezahlen von 1 - 50 verwenden!");
	      }
	}
rufe ich eine Methode durch Eingabe des Nutzers verschieden oft auf. In Zeile 18, wird nun die Anzahl der Aufrufe ausgegeben und da wo die Klammern sind soll die Anzahl der richtigen Ergebnise angezeigt werden. Ob das Ergebnis richtig oder falsch ist, wird allerdings in dieser Methode entschieden.
Code:
final void add() {
		BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));
		String eingabeZeile;
		int zahl;
		try {		
			Random generator = new Random();
			int zahl1 = generator.nextInt(30);
			int zahl2 = generator.nextInt(30);
			int ergebnis = zahl1+zahl2;
			System.out.println("Aufgabe: " + zahl1 + "+" + zahl2 + "=");
			eingabeZeile = eingabe.readLine(); 
			StringTokenizer tokens = new StringTokenizer(eingabeZeile);
			zahl = Integer.parseInt(tokens.nextToken());  
			if(zahl == ergebnis) {
				System.out.println("Richtig!"+"\n");
			}
			else if(zahl != ergebnis){
				System.out.println("Das war leider falsch!"+"\n");
			}
		}
		catch(IOException e) {
			System.out.println("Fehler bei der Eingabe");
		}
		catch(NoSuchElementException e) {
			System.out.println("Zuwenig Werte eingegeben");
		}
		catch(NumberFormatException e) {
			System.out.println("Bitte Ganzezahlen verwenden!");
		}
	}
Jetzt meine Frage: Wie kann ich erreichen, dass die richtigen Ergebnisse gezählt werden und dann an die erste Methode weitergegeben werden, damit ich sie hier auch in Zeile 18 ausgeben kann?

Hoffe ihr könnt mir helfen! Danke!
 

kaie

Bekanntes Mitglied
Gib doch einfach aus der add-Methode heraus einen boolean-Wert zurück, der Dir sagt, ob die Antwort richtig oder falsch war:
Code:
final boolean add() { 
         ....
         if(zahl == ergebnis) { 
            System.out.println("Richtig!"+"\n"); 
            return true;
         } 
         else if(zahl != ergebnis){ 
            System.out.println("Das war leider falsch!"+"\n"); 
            return false;
         } 
         ....
}
Dann musst Du in Deiner Hauptschleife nur die richtigen Antworten zählen:
Code:
void numberadd() { 
            ....
            int richtige = 0;
            for(int i=0; i<=anzahl; i++) { 
               if(i != anzahl) { 
                  CalculationMethods plus = new CalculationMethods(); 
                  if( plus.add()==true )
                  {
                    richtige++;
                  }
               } 
               else if(i == anzahl) { 
                        //HIER WIRD ANZAHL AUSGELESEN IN DIE KLAMMERN SOLLEN JETZT RICHTIGE 
                  System.out.println("Du hast von "+ anzahl + " Aufgaben "+ richtig +" richtig geloest."+"\n"); 
               ....
}
kaie
 

mobile

Bekanntes Mitglied
Morgen die Herren,

also ich habe das jetzt so umgeschrieben. Hier die Methode add():
Code:
final boolean add() {
		BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));
		String eingabeZeile;
		int zahl;
		try {		
			Random generator = new Random();
			int zahl1 = generator.nextInt(30);
			int zahl2 = generator.nextInt(30);
			int ergebnis = zahl1+zahl2;
			System.out.println("Aufgabe: " + zahl1 + "+" + zahl2 + "=");
			eingabeZeile = eingabe.readLine(); 
			StringTokenizer tokens = new StringTokenizer(eingabeZeile);
			zahl = Integer.parseInt(tokens.nextToken());  
			if(zahl == ergebnis) {
				System.out.println("Richtig!"+"\n");
				return true;
			}
			else if(zahl != ergebnis){
				System.out.println("Das war leider falsch!"+"\n");
				return false;
			}
		}
		catch(IOException e) {
			System.out.println("Fehler bei der Eingabe");
		}
		catch(NoSuchElementException e) {
			System.out.println("Zuwenig Werte eingegeben");
		}
		catch(NumberFormatException e) {
			System.out.println("Bitte Ganzezahlen verwenden!");
		}
	}
und hier die Methode numberadd():
Code:
final void numberadd() {
	      BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));//Instanz für EIngabeStream
	      String eingabeZeile;
	      int anzahl;
	      try {
	         System.out.println("Wie viele Aufgaben m\u00f6chtest du rechnen?");
	         eingabeZeile = eingabe.readLine(); //Eingabe Zeile wird eingelesen
	         StringTokenizer tokens = new StringTokenizer(eingabeZeile);
	         anzahl = Integer.parseInt(tokens.nextToken()); 
	         int richtige = 0;
	         for(int i=0; i<=anzahl; i++) {
	            if(i != anzahl) {
	               CalculationMethods plus = new CalculationMethods();
	               if( plus.add()==true ) {
	            	   richtige++;
	               }
	            }
	            else if(i == anzahl) {
	            	System.out.println("Du hast von " +anzahl + " Aufgaben " + richtige + "gelu00f6st."+"\n");
	            	System.out.println("Was m\u00f6chtest du jetzt tun?");
	            	StartingScreen run = new StartingScreen();
	            	run.start();   
	            }
	         }
	      }
	      catch(IOException e) {
	         System.out.println("Fehler bei der Eingabe");
	      }
	      catch(NoSuchElementException e) {
	         System.out.println("Zuwenig Werte eingegeben");
	      }
	      catch(NumberFormatException e) {
				System.out.println("Bitte Ganzezahlen von 1 - 50 verwenden!");
	      }
	}
Jetzt sagt er mir aber: This method must return a result of type boolean.
Aber die Methode add() liefert doch einen Typ von boolean zurück. Was ist falsch?

Danke für Hilfe!
 
G

Guest

Gast
Hallo,

Deine Methode hat nur einen Rückgabewert wenn try {} fehlerlos durchläuft!!
Du musst eben noch festlegen was zurückgegeben werden soll, wenn eine Exception auftritt.
 

Murray

Top Contributor
Der Compiler ist nicht so "schlau" zu erkennen, dass eine der beiden Bedingungen (zahl == ergebnis) und (zahl != ergebnis) auf jeden Fall zutreffen muss.

Wenn Du schreibst:

Code:
         if(zahl == ergebnis) {
            System.out.println("Richtig!"+"\n");
            return true;
         } else { //--- hier kein if
            System.out.println("Das war leider falsch!"+"\n");
            return false;
         }

, dann sollte es klappen /EDIT: (aber nur, wenn Du auch im Falle der abgefangenen Exceptions auch einen Wert zurücklieferst)
 

mobile

Bekanntes Mitglied
Also irgendwie klappt das immer noch nicht. Habe das jetzt so gemacht.
Code:
if(zahl == ergebnis) {
				System.out.println("Richtig!"+"\n");
				return true;
			}
			else {
				System.out.println("Das war leider falsch!"+"\n");
				return false;
			}
Kommt immer noch die gleiche fehlermeldung. Hmm... .(
 

Murray

Top Contributor
Siehe den Post des Gastes:
Code:
     catch(IOException e) {
         System.out.println("Fehler bei der Eingabe");
         return false;
      }
      catch(NoSuchElementException e) {
         System.out.println("Zuwenig Werte eingegeben");
         return false;
      }
      catch(NumberFormatException e) {
         System.out.println("Bitte Ganzezahlen verwenden!");
         return false;
      }
 

Murray

Top Contributor
Da Du die Exception ja aber auch im aufrufenden Code behandelst, könntest Du im add die Exception auch einfach deklarieren:
Code:
final boolean add() throws IOException, NoSuchElementException, NumberFormatException {
      BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));
      String eingabeZeile;
      int zahl;

      Random generator = new Random();
      int zahl1 = generator.nextInt(30);
      int zahl2 = generator.nextInt(30);
      int ergebnis = zahl1+zahl2;
      System.out.println("Aufgabe: " + zahl1 + "+" + zahl2 + "=");
      eingabeZeile = eingabe.readLine();
      StringTokenizer tokens = new StringTokenizer(eingabeZeile);
      zahl = Integer.parseInt(tokens.nextToken()); 
      if(zahl == ergebnis) {
          System.out.println("Richtig!"+"\n");
          return true;
      } else {
          System.out.println("Das war leider falsch!"+"\n");
          return false;
      }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Suche "richtiges" Framework/Library Allgemeine Java-Themen 14
W Variable Initialisierung mit dem Ergebnis einer Regex Allgemeine Java-Themen 1
OnDemand XML desializing Attribute bringt nicht erwartetes Ergebnis Allgemeine Java-Themen 16
N Wie kommt dieses Ergebnis zu stande Allgemeine Java-Themen 15
Y Falsches Ergebnis mit "/" Operator Allgemeine Java-Themen 2
S Seltsames Ergebnis mit Date-Klasse Allgemeine Java-Themen 6
H float Berechnung: Ergebnis ohne wissenschaftliche Notation Allgemeine Java-Themen 5
M Falsches Ergebnis bei Rechnung Allgemeine Java-Themen 1
T If Vergleich ergibt nicht das richtige Ergebnis Allgemeine Java-Themen 2
J-Gallus Erste Schritte Wahrscheinlich Anfänger Fehler beim rechnen. Falsches Ergebnis. Allgemeine Java-Themen 9
Chr1s ergebnis = Zahl? Allgemeine Java-Themen 3
R Threads asynchrone Tätigkeit mit Ergebnis Auswertung Allgemeine Java-Themen 4
D Timestamp to Date, ergibt falsches ergebnis Allgemeine Java-Themen 5
Antoras Micro-benchmark für parallel vs. sequentiell erzeugt unerwartetes Ergebnis Allgemeine Java-Themen 8
S Ergebnis von Cursor c1 mit Cursor c2 vergleichen Allgemeine Java-Themen 3
M 2 Methoden, 2 Rückgabewerte, aber ein Ergebnis Allgemeine Java-Themen 7
N contains(.) liefert nicht erwartetes Ergebnis Allgemeine Java-Themen 3
D Wann ist das ergebnis einer Rechnung eine Double? Allgemeine Java-Themen 7
Fabiator Variablen Variablen Zählen Allgemeine Java-Themen 3
S Drools: Zählen wie oft ein Wert vorkommt Allgemeine Java-Themen 1
R Methoden Was fehlt mir bzw. muss ich bei der Methode countHarshabNumbers ändern damit ich die Harshad Zahlen im Intervall [51, 79] zählen kann? Allgemeine Java-Themen 19
A Binärer Suchbaum Knoten Zählen Allgemeine Java-Themen 4
L Menge der Buchstaben eines Textes zählen Allgemeine Java-Themen 3
J Rekursive Programmierung-Zählen von Ziffern Allgemeine Java-Themen 5
J Die Menge einer Zahl im Binärbaum zählen Allgemeine Java-Themen 7
N [stream-api] Parameter pro Typ zählen Allgemeine Java-Themen 1
B Counting Sort (Sortieren durch Zählen) Allgemeine Java-Themen 13
K Wörter in Strings zählen Allgemeine Java-Themen 7
D Fehlgeschlagene Logins zählen... Was ist sinnvoll? Allgemeine Java-Themen 2
R Zusammenhängende Werte in 2-dim. Array finden und zählen Allgemeine Java-Themen 3
C Kleinbuchstaben zählen Allgemeine Java-Themen 10
P Werte in Array zählen und Summe der einzelnen Teile ausgeben Allgemeine Java-Themen 10
M Ein bestimmtes Wort in einem Text zählen (String in String) Allgemeine Java-Themen 9
B substring zählen Allgemeine Java-Themen 7
Landei Collections Word-Frequenzen zählen Allgemeine Java-Themen 7
C Mausklicks zählen (extern) Allgemeine Java-Themen 6
S Knoten zählen in einem Binärbaum Allgemeine Java-Themen 2
S erzeugte objekte zählen Allgemeine Java-Themen 3
H Zeitraum: Arbeitstage zählen Allgemeine Java-Themen 5
J String Wörter zählen Allgemeine Java-Themen 4
S Array: Anzahl Elemente mit best. Wert zählen Allgemeine Java-Themen 4
M Anwendung nur einmal starten / Zeichen in String zählen Allgemeine Java-Themen 7
G Dateien und Verzeichnisse in einem Verzeichnis zählen Allgemeine Java-Themen 9
2 Tage zwischen zwei Datumsdaten zählen Allgemeine Java-Themen 2
G Tage zwischen zwei Datumsdaten zählen Allgemeine Java-Themen 3
G arguemente einer Methode zählen? Allgemeine Java-Themen 19
X Strings aus einer ArrayList zählen Allgemeine Java-Themen 11
B Farben Zählen Allgemeine Java-Themen 17
S Methode zum Zählen von Buchstaben in Strings gesucht Allgemeine Java-Themen 11
I vergleich und zählen von Strings Allgemeine Java-Themen 7
C Objekte einer Klasse zählen Allgemeine Java-Themen 25
T Zeilen eines Projekts zählen lassen Allgemeine Java-Themen 14
F Dateien in einem Ordner zählen Allgemeine Java-Themen 15
G ziffern zählen mit rekursiver methode Allgemeine Java-Themen 2
F Zählen wie oft Methode aufgerufen wurde Allgemeine Java-Themen 2
L Häufigkeit der Werte in Datei zählen! Heap Space beschränkt! Allgemeine Java-Themen 31
F Bestimmes zeichen im String zählen Allgemeine Java-Themen 34
G Dateien zählen im Verzeichnis Allgemeine Java-Themen 11
B Integer zählen bzw. speichern Allgemeine Java-Themen 3
S lines of code zählen Allgemeine Java-Themen 9
A Buchstaben zählen Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben