Erste Schritte,erste Class,Korrekturlesen und Verbesserungen

Status
Nicht offen für weitere Antworten.

RipdEaTh

Mitglied
Hi Leute!

Ich beginne gerade damit, mich mit Java auseinander zu setzen.
Da ich heute bei der Arbeit ein wenig Luft hatte, und etwas Abwechslung brauchte, habe ich angefangen, einen Taschenrechner in Java zu erstellen.

Folgende Punkte hatte ich mir vorgestellt:

- Man kann mit dem Rechner die Grundrechenarten benutzen, also addieren, substrahieren, multiplizieren, dividieren.
- Man kann beliebig viele Zahlen einsetzen, also z.B. mit 3 Zahlen rechnen, aber auch mit 10.
- Man soll nach jeder Zahl eine Rechenart wählen können.
- Bei dem Versuch, etwas durch 0 zu dividieren, soll ein Fehler ausgegeben werden und der Schritt ausgelassen werden.
- Der Rechner soll das Endergebnis ausgeben.

Ich habe den Rechner soweit zum Laufen bekommen, er tut auch alles was er soll.

Nun wollte ich einmal fragen, ob hier jemand vll meinen Code Korrekturlesen kann, mir Verbesserungsvorschläge gibt, den Code vll optimiert, denn ich denke, der erste Programmcode ist ziemlich chaotisch ^^


Dadurch möchte ich sehen, worauf ich mehr achten sollte, was ich verbessern kann, blah blah ^^ Lernen eben..

So, hier einmal der Code..

Code:
import java.io.*;

class Taschenrechner {
	static float rErg;
	static char rOption;
	
	static float addieren (float ergebnis, float rZahl) {
		ergebnis += rZahl;
		return ergebnis;
	}
	
	static float substrahieren (float ergebnis, float rZahl) {
		ergebnis -= rZahl;
		return ergebnis;
	}
	
	static float multiplizieren (float ergebnis, float rZahl) {
		ergebnis *= rZahl;
		return ergebnis;
	}
	
	static float dividieren (float ergebnis, float rZahl) {
		if (rZahl == 0) {
			System.out.println("Fehler! Es kann nicht durch Null dividiert werden! Der Vorgang wird übersprungen!");
		}
		else {
			ergebnis /= rZahl;
		}
		return ergebnis;
	}
	
	static float rechne (char rArt, float ergebnis, float rZahl) {
		switch (rArt) {
			case '+': 
			Taschenrechner.rErg = addieren(ergebnis, rZahl);
			break;
			
			case '-': 
			Taschenrechner.rErg = substrahieren(ergebnis, rZahl);
			break;
			
			case '*': 
			Taschenrechner.rErg = multiplizieren(ergebnis, rZahl);
			break;
			
			case '/': 
			Taschenrechner.rErg = dividieren(ergebnis, rZahl);
			break;
		}
		return Taschenrechner.rErg;
	}
	
	static boolean checkRArt (char rArt) {
		boolean rCheck = false;
		switch (rArt) {
			case '+':
			case '-':
			case '*':
			case '/':
			rCheck = true;
			break;
		}
		return rCheck;
	}
	
	public static void main (String[] args) throws IOException {
		float erg = 0;
		int aZahlen;
		float zahl;
		boolean status = true;
		
		BufferedReader stdin = new BufferedReader(
		new InputStreamReader( System.in ) );
		String option;
		String aZahlenS;
		String eingabe;
		
		do {
		System.out.print("Wieviele Zahlen moechtest du eingeben: ");
		aZahlenS = stdin.readLine();
		aZahlen = Integer.parseInt(aZahlenS);
		if (aZahlen < 2) System.out.println("Fehler! Du musst mindestens 2 Zahlen angeben!");
		} while (aZahlen < 2);

		float[] zahlen = new float[aZahlen];
		
		for (int i=0; i < aZahlen; i++) {
			if ((i+1) > 1) {
				boolean checkRArt;
				do {
					System.out.print("Was moechtest du mit der Zahl machen?");
					option = stdin.readLine();
					char options = option.charAt(0);
					checkRArt = checkRArt(options);
					Taschenrechner.rOption = options;
				} while (checkRArt = false);
			}
			System.out.print("Gebe die " + (i+1) + ".Zahl ein: ");
			eingabe = stdin.readLine();
			zahlen[i] = Float.parseFloat(eingabe);
			
			zahl = zahlen[i];
			
			if (i == 0) erg = zahl;
			else {
				erg = rechne(Taschenrechner.rOption, erg, zahl);
			}
		}
			
						
		/*for (int i=0; i < aZahlen; i++) {
			System.out.print("Gebe die " + (i+1) + ".Zahl ein: ");
			eingabe = stdin.readLine();
			zahlen[i] = Integer.parseInt(eingabe);
						
			if ((i + 1 != aZahlen) {
				boolean checkRArt;
				do {
					System.out.print("Was moechtest du mit der Zahl machen?");
					option = stdin.readLine();
					char options = option.charAt(0);
					checkRArt = checkRArt(options);
				} while (checkRArt = false);
			}			
		}*/		
		
		System.out.println("Dein Ergebnis ist: " + erg);
	}
}

Vielen Dank schonmal im voraus für eure Mühe 🙂
 
Viel netter währe es doch wenn man einen String der Art 3*4+5-17 eingeben kann. So ist das ja unbenutzbar :wink:
Teil das ganze auf: Eine Klasse die Eingabe parst, und eine die sie berechnet.
Das mit dem static solltest du dir unbedingt abgewöhnen.
 
wie lass ich denn die eingabe in bestandteile zerlegen? also interessant wäre da ja erstmal die auflösung in einen array, wo mögliche geklammerte elemente drin enthalten sind..

was kann ich denn anstatt static machen? wenn da kein static steht gibts immer n error beim compilen..
 
RipdEaTh hat gesagt.:
wie lass ich denn die eingabe in bestandteile zerlegen? also interessant wäre da ja erstmal die auflösung in einen array, wo mögliche geklammerte elemente drin enthalten sind..
In der FAQ ist ein Beispiel für einen mathematischen Parser.
RipdEaTh hat gesagt.:
was kann ich denn anstatt static machen? wenn da kein static steht gibts immer n error beim compilen..
Objekte erzeugen :wink:
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben