Programm schließen und Neustarten

1up

Mitglied
Liebe Community,
Ich habe erst vor 2 Wochen mit dem Java Programmieren angefangen und schon habe ich einige Probleme, für die ich leider keine Lösung finde. Ich hoffe ihr könnt mir weiter helfen.

Ich have mehr oder weniger einen Taschenrechner programmiert, der leider noch nicht meinem Ziel entspricht. Und zwar muss ich nach jeder arithmetischen Operation den Taschenrechner neu starten.
Ich will allerdings, dass der Taschenrechner nach einer Rechnung wieder zum Anfang zurück geht und ich wieder wählen kann, welche Operation ich durchführen will.
Außerdem will ich, dass der Taschenrechner sich nur mit dem Befehlt "q" schließen lässt.

Des weiteren Akzeptiert mein Taschenrechner alle Arten von Eingabe. Ich will aber, dass er z.B. für ganzzahlige Operationen auch nur ganze Zahlen und bei arithmetischen Operationen keine Buchstaben akzeptiert.

Ich weiß echt nicht wie ich weiter kommen soll und würde mich freuen wenn ihr mir weiter helfen könntet.

Gruß,
Ömer


Java:
package paket;

import javax.swing.JOptionPane;

public class Uebung3 {

	public static void main(String[] args){
		 
		System.out.println("Folgende Operationen sind moeglich: ");
		System.out.println("x : Ganzzahl in Roemische Zahl konvertieren");
		System.out.println("+ : Addition");
		System.out.println("- : Subtraktion");
		System.out.println("/ : Division");
		System.out.println("* : Multiplikation");
		System.out.println("% : Modulo");
		System.out.println();
		
		String zeichenString = JOptionPane.showInputDialog("Welche Operation möchten sie durchfuehren?");
		char zs = zeichenString.charAt(0);
		
		if (zs !='x'){
			String s1 = JOptionPane.showInputDialog("Geben Sie die erste Zahl ein!");
			String s2 = JOptionPane.showInputDialog("Geben Sie die zweite Zahl ein!");
			
			double a = Double.parseDouble(s1);
			double b = Double.parseDouble(s2);
			double PLUS, MINUS, MAL, GETEILT, MODULO;
			PLUS = a + b;
			MINUS = a - b;
			MAL = a * b;
			GETEILT = a / b;
			MODULO = a % b;
			
			System.out.println("Folgende Berechnung wurde durchgeführt: ");
			
			switch (zs) {
				case '+': System.out.println(a + " + " + b + " = "+ PLUS); break;
				case '-': System.out.println(a + " - " + b + " = "+ MINUS); break;
				case '/': System.out.println(a + " / " + b + " = "+ GETEILT); break;
				case '*': System.out.println(a + " * " + b + " = "+ MAL); break;
				case '%': System.out.println(a + " % " + b + " = "+ MODULO); break;	 
			}
		}
		else{
			String s3 = JOptionPane.showInputDialog("Welche Zahl soll in eine roemische Zahl konvertiert werden?");
			int c = Integer.parseInt(s3);
			System.out.println(s3 + " als roemische Zahl ist: ");
			
			if ((c / 1000) > 0) {
				System.out.print("M");
				c = c - 1000;
			}
			if ((c / 1000) > 0) {
				System.out.print("M");
				c = c - 1000;
			}
			if ((c / 1000) > 0) {
				System.out.print("M");
				c = c - 1000;
			}
			if ((c / 1000) > 0) {
				System.out.print("M");
				c = c - 1000;
			}
			if ((c / 500) > 0) {
				System.out.print("D");
				c = c - 500;
			}
			if ((c / 100) > 0) {
				System.out.print("C");
				c = c - 100;
			}
			if ((c / 100) > 0) {
				System.out.print("C");
				c = c - 100;
			}
			if ((c / 100) > 0) {
				System.out.print("C");
				c = c - 100;
			}
			if ((c / 100) > 0) {
				System.out.print("C");
				c = c - 100;
			}
			if ((c / 50) > 0) {
				System.out.print("L");
				c = c - 50;
			}
			if ((c / 10) > 0) {
				System.out.print("X");
				c = c - 10;
			}
			if ((c / 10) > 0) {
				System.out.print("X");
				c = c - 10;
			}
			if ((c / 10) > 0) {
				System.out.print("X");
				c = c - 10;
			}
			if ((c / 10) > 0) {
				System.out.print("X");
				c = c - 10;
			}
			if ((c / 5) > 0) {
				System.out.print("V");
				c = c - 5;
			}
			if ((c / 1) > 0) {
				System.out.print("I");
				c = c - 1;
			}
			if ((c / 1) > 0) {
				System.out.print("I");
				c = c - 1;
			}
			if ((c / 1) > 0) {
				System.out.print("I");
				c = c - 1;
			}
			if ((c / 1) > 0) {
				System.out.print("I");
				c = c - 1;
			}
			
			
		}
		
		
	}
}
 
Hallo 1up,

so wie ich das sehe, solltest du dich mal dringend mit Schleifen auseinandersetzen.

Forallem Konstrukte wie
Java:
            if ((c / 10) > 0) {
                System.out.print("X");
                c = c - 10;
            }
            if ((c / 10) > 0) {
                System.out.print("X");
                c = c - 10;
            }
lassen sich damit wunderbar umschreiben und zusammenfassen.

Für dein eigentliches Anliegen (wie auch für die Vereinfachung vom Quellcode) kannst du eine einfache
Code:
while
-Schleife benutzen.
 
mal von abgesehen das die römische schreibweise fehlerhaft ist ... denn es gilt die feste regel das immer nur maximal 3 gleiche zeichen direkt auf ein ander folgen dürfen ... sowas wie "IIII" oder "MMMM" ist unzulässig ... bzw einfach schlicht FALSCH !
 
mal von abgesehen das die römische schreibweise fehlerhaft ist ... denn es gilt die feste regel das immer nur maximal 3 gleiche zeichen direkt auf ein ander folgen dürfen ... sowas wie "IIII" oder "MMMM" ist unzulässig ... bzw einfach schlicht FALSCH !

Abgesehen davon, dass deine Rechtschreibung und Zeichensetzung auch einfach FALSCH ist, ist auch deine Aussage nicht ganz korrekt. Die Ursprünglichen römischen Zahlen (die additive Schreibweise) wurden nämlich mit z.B. iiii für ix geschrieben. Die Regel die du beschreibst, ist die subtraktive Schreibweise. Sie setzte sich erst ab dem Mittelalter durch.
Außerdem waren keine dieser Regeln bindend.

Bitte informier dich über etwas bevor du andere beschuldigst.

Gruß,
Ömer
 

Neue Themen


Zurück
Oben