Datentypen Ganz simpler Taschenrechner mit switch

  • Themenstarter Themenstarter fragesteller
  • Beginndatum Beginndatum
F

fragesteller

Gast
Es kommt bei dem Quellcode immer die Fehlermleldung
Exception in thread "main" java.lang.Error: Unaufgelöstes Kompilierungsproblem:
Diese Methode muss ein Ergebnis des Typs double zurückgeben

at Squared.rechner(Squared.java:3)
at Squared.main(Squared.java:27)


Java:
Exception in thread "main" java.lang.Error: Unaufgelöstes Kompilierungsproblem: 
	Diese Methode muss ein Ergebnis des Typs double zurückgeben

	at Squared.rechner(Squared.java:3)
	at Squared.main(Squared.java:27)
 
Quellcode vergessen 😱
Java:
public class Squared
{
	public static double rechner( double zahl1, char operator, double zahl2 )
	{
		switch( operator )
		{
		case '+':
			return zahl1 + zahl2;
		case '-':
			return zahl1 - zahl2;
		case '/':
			return zahl1 / zahl2;
		case ':':
			return zahl1 / zahl2;
		case '*':
			return zahl1 * zahl2;
		case 'x':
			return zahl1 * zahl2;
		}
	
	}
	public static void main( String[] args)
	{
		double zahl1 = Double.parseDouble(javax.swing.JOptionPane.showInputDialog( "Erste Zahl eingeben" ) );
		char operator = javax.swing.JOptionPane.showInputDialog( "Operator eingeben").charAt(0);
		double zahl2 = Double.parseDouble(javax.swing.JOptionPane.showInputDialog( "Zweite Zahl eingeben" ) );
		System.out.println( rechner( zahl1, operator, zahl2 ) );
	}
	
}
 
"rechner besitzt kein allgemeines return-Statement."

Und wie müsste ich das verbessern

du meinst beim Importieren wahrscheinlich das JoptionPane ?
doch das weiß ich
 
Genau das meinte ich.

Java:
public static double rechner( double zahl1, char operator, double zahl2 )
{
	switch( operator )
	{
		case '+':
        		return zahl1 + zahl2;
		case '-':
			return zahl1 - zahl2;
		case '/':
			return zahl1 / zahl2;
		case ':':
			return zahl1 / zahl2;
		case '*':
			return zahl1 * zahl2;
		case 'x':
			return zahl1 * zahl2;
        }
	return(0.0d);
}

oder imho noch besser:

Java:
public static double rechner( double zahl1, char operator, double zahl2 )
{
	double result = 0.0d;
	
    switch( operator )
    {
    	case '+':
    		result = zahl1 + zahl2;
    	break;

    	case '-':
    		result = zahl1 - zahl2;
        break;

    	case '/':
    	case ':':
    		result = zahl1 / zahl2;
    	break;
    		
    	case '*':
    	case 'x':
    		result = zahl1 * zahl2;
   		break;
   		
   		default:
   			throw new IllegalArgumentException("Illegal operator char.");
    }
    return(result);
}


Edit: Oder natürlich so wie von eRaaaa, ist Geschmackssache.
 
dieses
Java:
return(0.0d);

ist das nur dafür gedacht, falls keiner der fälle zutrifft?
und der compiler hatte genau diesen fall befürchtet

Java:
throw new IllegalArgumentException("Nur +,-,/,:,*,x erlaubt");

das kenne ich überhaupt nicht
vermute aber, dass das die fehlermeldung bei ungültigem operator ist oder?
 
Komisch, wenn ich das "Programm" in Eclipse starte funktioniert es.
Wenn ich es manuell mache mit javac taschenrechner.java und dann java taschenrechner.class starte kommen fehlermeldungen
Java:
Exception in thread "main" java.lang.NoClassDefFoundError: taschenrechner
Caused by: java.lang.ClassNotFoundException: taschenrechner.class
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
Could not find the main class: taschenrechner.class.  Program will exit.
 

Zurück
Oben