Mein erstes Java Programm!! :D

10/17/2015 02:45 TheRealLenon#1
Hallo liebe Community,

ich befinde mich seit kurzen auch in der Programmierspalte der Computer Sektion.

Hier habe ich mal ein kleines Programm geschrieben. Bitte bedenkt, dass ich erst seit September begonnen habe richtig zu programmieren und zuvor so gut wie keine Kenntnisse vorhanden waren.

Code:
import java.sql.Date;
import java.util.Calendar;

import javax.swing.JOptionPane;


public class BigProjectClass1 {

	@SuppressWarnings("deprecation")
	public static void main(String[] args) {
		JOptionPane.showMessageDialog(null, "Herzlich-Willkommen auf meinem kleinen Tool.\ndieses "
				+ "Programm wurde in Java geschrieben\nüber ein Feedback freue ich mich sehr\nwie du mich kontaktieren "
				+ "kannst gehe auf Copyright!");            
		
		
		String input=JOptionPane.showInputDialog(null, "Du kannst unter verschiedenen Modi auswählen\n"
				+ "\nWähle [1] für Taschenrechner"
				+ "\nWähle [2] für Datum und Uhrzeit"
				+ "\nWähle [3] für Copyrights.");
		
		if(input.equals("1")) {
		   
			JOptionPane.showMessageDialog(null, "Du befindest dich nun im Taschenrechnermenü.");
			String input2=JOptionPane.showInputDialog(null, "Bitte gebe nun die erste Zahl ein.");
			String input3=JOptionPane.showInputDialog(null, "Bitte gebe nun die zweite Zahl ein.");
			JOptionPane.showMessageDialog(null, "Deine Zahlen sind:" + input2 +" und "+ input3);
			String input4=JOptionPane.showInputDialog(null, "Was möchtest du mit diesen Zahlen machen\n"
					+ "\nWähle Addieren, Subtrahieren, Dividieren oder Multiplizieren.");
			
			if (input4.equals("Addieren")){
				
				int ersteZahlRechner = Integer.parseInt(input2);
				int zweiteZahlRechner = Integer.parseInt(input3);
				
				JOptionPane.showMessageDialog(null, (ersteZahlRechner + zweiteZahlRechner));
				
				
				
			}
			
			if (input4.equals("addieren")){
				
				int ersteZahlRechner = Integer.parseInt(input2);
				int zweiteZahlRechner = Integer.parseInt(input3);
				
				JOptionPane.showMessageDialog(null, (ersteZahlRechner + zweiteZahlRechner));
				
			}
			
			if (input4.equals("Subtrahieren")){
				
				int ersteZahlRechner = Integer.parseInt(input2);
				int zweiteZahlRechner = Integer.parseInt(input3);
				
				JOptionPane.showMessageDialog(null, (ersteZahlRechner - zweiteZahlRechner));
			
			}
			
			if (input4.equals("subtrahieren")){
				
				int ersteZahlRechner = Integer.parseInt(input2);
				int zweiteZahlRechner = Integer.parseInt(input3);
				
				JOptionPane.showMessageDialog(null, (ersteZahlRechner - zweiteZahlRechner));
			}
			
			if (input4.equals("Dividieren")){
				
				int ersteZahlRechner = Integer.parseInt(input2);
				int zweiteZahlRechner = Integer.parseInt(input3);
				
				JOptionPane.showMessageDialog(null, (ersteZahlRechner / zweiteZahlRechner));
			}
			
			if (input4.equals("dividieren")){
				
				int ersteZahlRechner = Integer.parseInt(input2);
				int zweiteZahlRechner = Integer.parseInt(input3);
				
				JOptionPane.showMessageDialog(null, (ersteZahlRechner / zweiteZahlRechner));
			}
			
			if (input4.equals("Multiplizieren")){
				
				int ersteZahlRechner = Integer.parseInt(input2);
				int zweiteZahlRechner = Integer.parseInt(input3);
				
				JOptionPane.showMessageDialog(null, (ersteZahlRechner * zweiteZahlRechner));
			}
			
			if (input4.equals("multiplizieren")){
				
				int ersteZahlRechner = Integer.parseInt(input2);
				int zweiteZahlRechner = Integer.parseInt(input3);
				
				JOptionPane.showMessageDialog(null, (ersteZahlRechner * zweiteZahlRechner));
			}
			
			
			
			
		}
		
		if (input.equals("2")){
			Calendar cal = Calendar.getInstance ();
			  JOptionPane.showMessageDialog(null, "Datum: " + cal.get( Calendar.DAY_OF_MONTH ) +
                      "." + (cal.get( Calendar.MONTH ) + 1 ) +
                      "." + cal.get( Calendar.YEAR ) );

			  JOptionPane.showMessageDialog(null,"Uhrzeit: " + cal.get( Calendar.HOUR_OF_DAY ) + ":" +
                      cal.get( Calendar.MINUTE ) + ":" +
                      cal.get( Calendar.SECOND ) + ":" +
                      cal.get( Calendar.MILLISECOND ) );
		}
		
		if (input.equals("3")){
			
			JOptionPane.showMessageDialog(null, "Du befindest dich im Copyright Menü.\n\nDer Code wurde von Pascal alias TheRealLenon selbst erstellt."
					+ "\nDieses Programm wird für einen Download zur Verfügung gestellt.\nJegliche Veränderung und Verbreitung des Codes wird nicht geduldet.\nBesseres fällt mir nicht ein."
					+ "\n	Ich Hoffe ihr habt Spaß mit meinem Progrann!!");
		}

	}

}
Ich Hoffe euch hat mein Code gefallen.

Bitte schreibt mir Verbesserungsvorschläge oder Ideen, da mich die Sucht langsam Gepackt hat und es extrem Spaß macht, solche Kleinigkeiten zu programmieren.

Mit freundlichen Grüßen



TheRealLenon
10/17/2015 12:03 ComputerBaer#2
Eine Sache solltest du dir gleich merken: Möglichst wenig unnötigerweise doppelten Code in deinem Programm haben.

Stell dir vor, du veränderst etwas in "Addieren", vergisst dann aber "addieren" auch anzupassen. Dann suchst du ewig nach dem Fehler, weil du einfach nicht damit rechnest.

Stell dir vor, du möchtest jetzt lieber mit Kommazahlen (z.B. double) rechnen. Dann veränderst du es in "addieren", vergists es aber bei den anderen drei Rechenarten. Dann kann es sein, dass du wieder am rätseln bist warum da das Komma fehlt.
10/17/2015 12:59 TheRealLenon#3
Wie soll ich das mit dem Addieren addieren verstehen?

Denn wenn ich in dem Ausgeführtem Programm addieren eingebe und das im Code weggelassen habe, öffnet sich kein neues Fenster. Sprich das Programm läuft nicht weiter..
10/17/2015 13:48 Mysthik#4
Anstatt das hier:
Kannst du folgendes machen:

Dadurch ist deine Eingabe nicht mehr CaseSensitiv sowas wie AddIeReN ist dann auch möglich wenn du das nicht haben willst sondern nur Addieren und addieren kannst du beides auch in eine if packen mit dem logischen "Oder" Operator


Das x || y heißt so viel wie entweder x muss erfüllt sein ODER y.
PHP Code:
if (input4.equals("addieren") || input4.equals("Addieren") ) 
Das sagt also aus, dass die Eingabe entweder addieren oder Addieren sein muss.


Weitere Verbersserungsforschläge währen folgende:

Du kannst das parsen der Zahlen schon vorher machen also so in etwa:


Dann kannst du dir noch überlegen ob du nicht else if verwenden willst. Das Programm muss dann nicht alle ifs prüfen sondern überpringt die anderen sobald eine zutrifft. Wenn die eingabe addieren war wird nur die if von addieren geprüft die anderen werden direkt übersprungen. Wenn die eingabe subtrahieren ist, wird erst addieren geprüft, dann subtrahieren und da das wahr ist, werden alle danach übersprungen.




Dann kannst du dir noch überlegen Kommawerte zuzulassen. Sofern du diese kennst also ein double und kein Int


Das letzte was mir noch spontan einfällt wäre eine Fehlerbehandlung falls man versucht soetwas wie "abd" als Zahl einzugeben. Da ich aber nicht weiß ob du dich mit Fehlerbehandlung schon auseinander gesetzt hast, lass ich das. Wenn du dazu ein Beispiel haben willst sag bescheid.

Eine kleinigkeit habe ich aber noch. Gewöhn dir am besten englische Variablen-Namen an. Das ist so der de facto Standard :).
10/17/2015 14:12 ComputerBaer#5
Ich hatte jetzt bei meinen beiden Verbesserungsvorschlägen deinen unveränderten Code als Grundlage genommen, deshalb fehlt die erste Verbesserung im zweiten Code. Weil ihr es scheinbar beide nicht gesehen habt, schreibe ich es hier noch einmal.

Wie ich bereits oben gesagt habe:
Code:
if (input4.equalsIgnoreCase("addieren"))
Dann ist es vollkommen egal wie das geschrieben wurde.
Addieren -> true
addieren -> true
AdDiErEn -> true
aDdIeReN -> true

Es hat den selben Effekt wie das von Mysthik (siehe nächsten Code), ist allerdings kürzer.
Code:
input4 = input4.toLowerCase();
if (input4.equals("addieren"))
Für " addieren " (Leerzeichen vorne/hinten) müssten man es noch trimmen.
Code:
input4 = input4.trim();
if (input4.equalsIgnoreCase("addieren"))
10/17/2015 15:32 TheRealLenon#6
Okay Vielen Dank, für die schnelle Hilfe.

#Vote4Close