2 kurze Anfänger fragen

Amarok

Mitglied
Abend zusammen

ich der anfänger habe mal zwei kurze Fragen an euch.
Ich habe ein kleines sinnloses Programm geschrieben :
Das Programm nimmt zwei Zufallswerte und der Benutzer gibt ein was damit gemacht werden soll (+,-,...) Das Programm gibt das Ergebnis aus.

1:
Wenn ich das Ergebnis sehe muss ich immer wieder, das Programm neustarten um ein weiteres Ergebnis zu bekommen.
Gibt es eine Möglichkeit dass, das Programm sozusagen wieder von vorne beginnt nachdem man es dazu auffordet?
Ich hoffe es ist verständlich was ich meine.

2:
Bezieht sich ebenfalls auf mein Programm.
Wie sage ich dem Programm das es auch den Operator zufällig wählen soll?


Wäre nett wenn mir jemand mal einen Denkanstoss geben könnte.
Danke MFg Amarok


Java:
  import java.util.Random;
import java.util.Scanner;
     
     
    public class Test {
       // RandomTaschenrechner 
       
     
           
        public static void main(String args[]){
     
        	
        // Variabeln
        	
        double ergebnis = 0;
        int randomzahl1 = 0   , randomzahl2 = 0, operator;
        String zeichen;
        Scanner eingabe = new Scanner (System.in);
        Random wurfel = new Random ();
        
        System.out.println("Taschenrechner 2.2");
     
        // Einlesen der Zufallswerte
        System.out.println ("Zahl 1");
        for  (int i=0; i<1; i++){
			randomzahl1 = 1+ wurfel.nextInt(100);
			System.out.println (randomzahl1);
		}
        System.out.println ("Zahl 2");
		for  (int i=0; i<1; i++){
			randomzahl2 = 1+ wurfel.nextInt(100);
			System.out.println (+randomzahl2);
		}
		
		
     
       
        // Eingabe des Rechenoperators

        System.out.println("Wählen sie Bitte ein Rechenart aus: ");
        System.out.println("1: Addition");
        System.out.println("2: Subtraktion");
        System.out.println("3: Multiplikation");
        System.out.println("4: Division");
        zeichen = eingabe.next();


        
        // Auswertung der Eingabe
        
        switch(zeichen.charAt(0))
        {
        case '1': ergebnis=randomzahl1+randomzahl2;
        System.out.println("Das Ergebnis lautet: "+ergebnis);
        System.out.println("Danke das Sie den Taschenrechner 2.2 verwendet haben.");
        break;

        case '2': ergebnis=randomzahl1-randomzahl2;
        System.out.println("Das Ergebnis lautet: "+ergebnis);
        System.out.println("Danke das Sie den Taschenrechner 2.2 verwendet haben.");
        break;

        case '3': ergebnis=randomzahl1*randomzahl2;
        System.out.println("Das Ergebnis lautet: "+ergebnis);
        System.out.println("Danke das Sie den Taschenrechner 2.2 verwendet haben.");
        break;

        case '4': ergebnis=randomzahl1/randomzahl2;
        System.out.println("Das Ergebnis lautet: "+ergebnis);
        System.out.println("Danke das Sie den Taschenrechner 2.2 verwendet haben.");
        break;

        default:
        System.out.println("Dieses Zeichen ist ungültig!!!");
        System.out.println("Bitte geben Sie ein gültiges Rechenzeichen ein!");
        break;
        
        }
        }
    }
 
Wenn ich das Ergebnis sehe muss ich immer wieder, das Programm neustarten um ein weiteres Ergebnis zu bekommen.
Gibt es eine Möglichkeit dass, das Programm sozusagen wieder von vorne beginnt nachdem man es dazu auffordet?
Ich hoffe es ist verständlich was ich meine.
Ich habe nun nicht wirklich viel Ahnung und es mag da einen ganz einfachen Verweis geben, aber Du könntest eine Variable (boolean?) definieren die, solange sie true ist, mittels einer while-Schleife um dein ganzes Programm eben dieses immer wiederholt.
Nach Ausgabe deines Ergebnisses hast Du eine Abfrage, ob noch weiter gerechnet werden soll. Wenn ja: Variable -> true -> while läuft erneut durch. Wenn nicht: Variable -> false und die while-Schleife ist beendet.

edit: wofür hast Du die Erzeugung der Zufallszahlen in for-Schleifen gepackt? Es müsste doch auch ohne gehen, oder?
 
Zuletzt bearbeitet:
Das mit der while Schleife ist gut. Aber man würde da eher eine do while Schleife benutzen.

Die for-Schleifen machen wirklich keinen Sinn. 😉

Operator zufällig wählen: quick and dirty würde ich sagen, du schreibst zufällig einen Wert in den char zwischen 30 und 35 Hexadezimal interpretiert und überspringst die Abfrage (auskommentierung).



Ansonsten ginge es noch so, dass du erst abfragst, was gemacht werden soll und du dann darauf reagierst.
Du fragst ab, ob die Rechenoperation ausgesucht werden soll oder nicht und rufst dementsprechende Methoden auf, die die Rechenoperation durchführen.
Soll die Operation zufällig sein erzeugst zu zufällig einen Wert zwischen 0 und 5, jagst diesen durch einen switch-case, welcher die entsprechenden Methoden für die Rechenoperation aufruft.
 
Danke an euch beiden für die Antworten.

Das mit den for Schleifen habe ich aus einem Tutorial über random.
Da es funktioniert hat dachte ich es wäre richtig so.
Tja so kann man falsch liegen....

Ich werde es mal mit einer Do While / Boolean versuchen, mal sehen ob es klappt.
MFG Amarok
 
ich würde da zu so einem Konstrukt übergehen :

zumindest so in die Richtung :

Hier mal ein grobes Gerüst

Java:
import java.util.Random;
import java.util.Scanner;


public class RandomCalculator{

	int currentRun;
	int[] randomValues;
	Random rdm;
	
	public RandomCalculator(int len, int seed){
		rdm = new Random();
		randomValues = new int[len];
		for (int i = 0; i < randomValues.length; i++) {
			randomValues[i] = rdm.nextInt(seed);
		}
	}
	
	private String convert(int value){
		return "Das Ergebnis beträgt" + value;
	}
	
	private void reset(){
		currentRun = 0;
	}
	private int add(){return 0;}
	private int sub(){return 0;}
	private int div(){return 0;}
	private int mul(){return 0;}
	
	public void run(int runs){
		Scanner sc = new Scanner(System.in);
		boolean running = true;
		
		while(running){
			
			while(currentRun < runs){
				System.out.println(currentRun);
				currentRun++;
			}
			
			System.out.println("nochmal ?");
			String answ = sc.nextLine();
			
			if(answ.equalsIgnoreCase("ja")) {
				reset();
			}
			if(answ.equalsIgnoreCase("nein")) {
				running = false;
			}
		}
		
		sc.close();
	}
	
	public static void main(String[] args){
		new RandomCalculator(5, 100).run(5);
	}
}
 
@kaoZ
Danke dir für die Bildliche Vorlage, in die muss ich mich erstmal reinarbeiten da sind einige Sache bei die mir bis jetzt neu waren.
 

Neue Themen


Zurück
Oben