Frage zur Erstellung von Methoden

Status
Nicht offen für weitere Antworten.

Mane123

Bekanntes Mitglied
Hallo zusammen,

ich habe einen einfachen "Taschenrechner" programmiert:

Java:
import javax.swing.*;
public class Nummer_4 {

	static double addition (double x, double y){
		return (x + y);
	}
	
	static double subtraktion (double x, double y){
		return (x - y);
	}
	
	static double multiplikation (double x, double y) {
		return (x * y);
	}
	
	static double division (double x, double y) {
		return (x / y);
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		double einVariable1, einVariable2, ergebnis =0;
		String einOperator;
		char einlesen;
		
einVariable1 = Integer.parseInt (JOptionPane.showInputDialog ("Bitte geben Sie die erste Zahl ein"));
einOperator  = JOptionPane.showInputDialog ("Bitte geben Sie einen der folgenden Operatoren ein: +, -, * oder /");
einVariable2 = Integer.parseInt (JOptionPane.showInputDialog ("Bitte geben Sie die zweite Zahl ein"));

einlesen = einOperator.charAt (0);

switch (einlesen){

case '+':
	ergebnis = addition (einVariable1, einVariable2);
	break;
	
case '-':
	ergebnis = subtraktion (einVariable1, einVariable2);
	break;
	
case '*':
	ergebnis = multiplikation (einVariable1, einVariable2);
	break;
	
case '/':
	ergebnis = division (einVariable1, einVariable2);
	break;
 
}

System.out.println ("Das Ergebnis von " + einVariable1+" " + einOperator+" " + einVariable2+ " ist "+ ergebnis);

		
	
		
	}

}

Diesen Taschenrechner muss ich nun so umwandeln, dass neben der Ausgabe der einzelnen Rechenoperation die Ergebnisse aller Rechenoperationen gleichzeitig auf dem Bildschirm ausgegeben werden können. Ich muss hierfür eine Methode verwenden.

Ohne eigener Methode würde das bei mir so aussehen:

Java:
import javax.swing.*;
public class Nummer_5 {

	static double addition (double x, double y){
		return (x + y);
	}
	
	static double subtraktion (double x, double y){
		return (x - y);
	}
	
	static double multiplikation (double x, double y) {
		return (x * y);
	}
	
	static double division (double x, double y) {
		return (x / y);
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		double einVariable1, einVariable2, ergebnis =0;
		String einOperator;
		char einlesen;
		
einVariable1 = Integer.parseInt (JOptionPane.showInputDialog ("Bitte geben Sie die erste Zahl ein"));
einOperator  = JOptionPane.showInputDialog ("Bitte geben Sie einen der folgenden Operatoren ein: +, -, * oder /");
einVariable2 = Integer.parseInt (JOptionPane.showInputDialog ("Bitte geben Sie die zweite Zahl ein"));

einlesen = einOperator.charAt (0);

switch (einlesen){

case '+':
	ergebnis = addition (einVariable1, einVariable2);
	break;
	
case '-':
	ergebnis = subtraktion (einVariable1, einVariable2);
	break;
	
case '*':
	ergebnis = multiplikation (einVariable1, einVariable2);
	break;
	
case '/':
	ergebnis = division (einVariable1, einVariable2);
	break;
 
}

System.out.println ("Das Ergebnis von " + einVariable1+" " + einOperator+" " + einVariable2+ " ist "+ ergebnis);


System.out.println ("\n\nZur Übersicht erhalten Sie nun noch die Ergebnisse aller Operationen: \n");

ergebnis = addition (einVariable1, einVariable2);
System.out.println ("Das Ergebnis von " + einVariable1+" "+ " + " + einVariable2+ " ist "+ ergebnis);

ergebnis = subtraktion (einVariable1, einVariable2);
System.out.println ("Das Ergebnis von " + einVariable1+" " +" - " + einVariable2+ " ist "+ ergebnis);

ergebnis = multiplikation (einVariable1, einVariable2);
System.out.println ("Das Ergebnis von " + einVariable1+" " +" * " + einVariable2+ " ist "+ ergebnis);

ergebnis = division (einVariable1, einVariable2);		
System.out.println ("Das Ergebnis von " + einVariable1+" " +" / " + einVariable2+ " ist "+ ergebnis);

		
	}

}

Meine Frage an euch:

Wie kann ich die Zeilen 59 bis 71 im zweiten Listing in eine eigene Methode packen, und diese Methode dann im Quelltext aufrufen?

Danke!
 
Na ganz genauso wie du deine additions(etc.) methoden nur eben void als Rückgabewert.
Als Parameter einfach die zwei Variablen sowie das Ergebnis als auch das char.

Ich sehe hier kein Problem - da du ja eh schon eigene Methoden hast?! Oder hast du dir die irgendwo abgeschaut und verstehst sie gar nicht?
 
Danke für deine schnelle Antwort.

Ich hab's nun so gemacht: (Warum meintest du denn ich muss das char auch noch in die Methode packen?)

Java:
import javax.swing.*;
public class Nummer_5 {

	static double addition (double x, double y){
		return (x + y);
	}
	
	static double subtraktion (double x, double y){
		return (x - y);
	}
	
	static double multiplikation (double x, double y) {
		return (x * y);
	}
	
	static double division (double x, double y) {
		return (x / y);
	}
	
	static void alleOperatoren (double einVariable1, double einVariable2) {
		double ergebnis;
		
		ergebnis = addition (einVariable1, einVariable2);
		System.out.println ("Das Ergebnis von " + einVariable1+" "+ " + " + einVariable2+ " ist "+ ergebnis);

		ergebnis = subtraktion (einVariable1, einVariable2);
		System.out.println ("Das Ergebnis von " + einVariable1+" " +" - " + einVariable2+ " ist "+ ergebnis);

		ergebnis = multiplikation (einVariable1, einVariable2);
		System.out.println ("Das Ergebnis von " + einVariable1+" " +" * " + einVariable2+ " ist "+ ergebnis);

		ergebnis = division (einVariable1, einVariable2);		
		System.out.println ("Das Ergebnis von " + einVariable1+" " +" / " + einVariable2+ " ist "+ ergebnis);

	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		double einVariable1, einVariable2, ergebnis =0;
		String einOperator;
		char einlesen;
		
einVariable1 = Integer.parseInt (JOptionPane.showInputDialog ("Bitte geben Sie die erste Zahl ein"));
einOperator  = JOptionPane.showInputDialog ("Bitte geben Sie einen der folgenden Operatoren ein: +, -, * oder /");
einVariable2 = Integer.parseInt (JOptionPane.showInputDialog ("Bitte geben Sie die zweite Zahl ein"));

einlesen = einOperator.charAt (0);

switch (einlesen){

case '+':
	ergebnis = addition (einVariable1, einVariable2);
	break;
	
case '-':
	ergebnis = subtraktion (einVariable1, einVariable2);
	break;
	
case '*':
	ergebnis = multiplikation (einVariable1, einVariable2);
	break;
	
case '/':
	ergebnis = division (einVariable1, einVariable2);
	break;
 
}

System.out.println ("Das Ergebnis von " + einVariable1+" " + einOperator+" " + einVariable2+ " ist "+ ergebnis);


System.out.println ("\n\nZur Übersicht erhalten Sie nun noch die Ergebnisse aller Operationen: \n");

alleOperatoren (einVariable1, einVariable2);

	}

}

Mein Problem lag darin:

ich hab's mit void alleOperatoren schon mal probiert, dann aber in der Methode main ergebnis = alleOpetaoren (einVariable1, einVariable2) eingegeben. => Fehlermeldung (da ja void)
Ich hab immer gedacht, dass bei Berechnungen in der Methode immer ein Rückgabetyp vorhanden sein muss.
Danke! (aller Anfang ist schwer 🙂 )

Aber ich glaub jetz müsste der Code passen?! 🙂
 
Hi,

ob Rückgabewert oder nicht entscheidest ja Du allein.
Gibt da verschiedenste Wege....

Was Du da geschrieben hast, sieht ganz ok aus.
Ich denke dass Du an Optimierungen keinen Bedarf hast. Würde Dir wahrscheinlich keiner abnehmen, dass Du es geschrieben hast, also lass es so 🙂

greetz
SLi
 
Dank schon mal. Ich lern Java für mich alleine zu Hause.

Darum is es manchmal auch schwer, für jemanden der zum ersten Mal eine Sprache erlernt, sich das alles selbst beizubringen, ich bin deshalb sehr froh, dass es das Forum hier gibt 🙂
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben