Methode x mal ausführen auf Befehl

Status
Nicht offen für weitere Antworten.

mobile

Bekanntes Mitglied
Hi Leute,

ich habe ein Problem. Mein Programm startet von einem Startbildschirm aus, wo man durch Zahlen wählt was man tun möchte.
Ich wähle die 1, dann möchte ich Zahlen addieren. Bevor die Methode add() aber gestartet wird, soll abgefragt werden wie viele Aufgaben man rechnen möchte. Das habe ich ach so weit hin bekommen. Dann hat es zweimal die add() aufgerufen und dann ging es nicht mehr weiter. Woran liegt das?
Habe das mit einer for Schleife und If-Anweisung gemacht. Wenn i != Zahl die eingegeben wird, dann führe die Methode aus. Alles uper geklappt.
Dann ahbe ich weiter gesagt if else i == Zahl die eingeben wurde, dann rufe eine andere Methode auf. Das hat er aber nicht gemacht. Da ist er nie hingekommen. Warum nciht?

Also noch mal kurz und knapp was ich will:
1.Eingabe Zahl einlesen
2.Wenn die Zahl zB 3 ist, soll 3 mal eine Methode aufgerufen werden, (ging alles gut)
3.Wenn die Methode 3 mal aufgerufen wurde, soll eine andere Methode aufgerufen werden.

Hoffe ihr könnt mir helfen!
 
Ein Quelltextauszug wäre hier sehr hilfreich. 😉

Bis jetzt habe ich das so verstanden
Code:
int anzahl=2; // die eingegebene Anzahl, im Beispiel 2
for(int i=0;i<anzahl;i++){
    methode();
}
// weiter geht's
 
Hier beginnt das Programm, bei case 1 wird die Klasse Numbers mit der Methode number aufgerufen
Code:
final class StartingScreen {
	void start() {
		BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));
		String eingabeZeile;
		int frage;
			try {					
				System.out.println("Addition (1)");
				System.out.println("Subtraktion (2)");
				System.out.println("Multiplikation (3)");
				System.out.println("Division (4)");
				System.out.println("Beenden (5)");
				eingabeZeile = eingabe.readLine(); 
				StringTokenizer tokens = new StringTokenizer(eingabeZeile);
				frage = Integer.parseInt(tokens.nextToken()); 
				switch(frage) {
					case 1 : Numbers plus = new Numbers();
								plus.number();
					break;
					case 2 : CalculationMethods minus = new CalculationMethods();
								minus.subtract();
	                break;
					case 3 : CalculationMethods multi = new CalculationMethods();
								multi.multiply();
		            break;
					case 4 : CalculationMethods divi = new CalculationMethods();
								divi.divide();
		            break;
					case 5 : System.out.println("Ich hoffe, dass ich dich bald wieder mit dir ueben darf!");
								System.exit(0);
					break;
				}
			}
			catch(IOException e) {
				System.out.println("Fehler bei der Eingabe");
			}
			catch(NoSuchElementException e) {
				System.out.println("Zuwenig Werte eingegeben");
			}
	}
}

Klasse Numbers mit der Methode Numbers.In der for Schleife vergeliche ich die EIngabe Zeile. Wenn sie ungleich sind soll die MEthode add(9 aus der Klasse CalculationMethods aufgerufen werden. Wenn ich 2 eingeben soll das zweimal geschehen.
Code:
final class Numbers {
	void number() {
		BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in));//Instanz für EIngabeStream
		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) {
					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");
		}
		
	}
}
Wurde die Schleife jetzt 2mal durchlaufen, ist i==anzahl also soll eine andere Methode aufgerufen werden, aber das macht er nie. Programm bleibt dann immer stehen, anstatt die Methode aufzurufen. 🙁

Das hier ist die Methode add, die 2mal aufgerufen werden soll
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(70);
			int zahl2 = generator.nextInt(70);
			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");
					add();
			}
			else if(zahl != ergebnis){
					System.out.println("Das war leider falsch!");
					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");
		}
	}
 
for(int i=0; i<anzahl; i++)
i wird nie gleich anzahl sein, weil deine Abbruchbedingung was anderes vorsieht!
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben