Methode funzt nicht, wieso?

Katsuro

Mitglied
Wieso funktioniert das hie rnicht? Sogar mein Lehrer weiß nicht was daran der Fehler ist.

Java:
public class VersuchPreise
          {
          public static void main (String[]args)
          {



  //Die Eingabewerte erste Artikelnummer danach die Menge die gekauft wurde
  int artnr = IO.readInt ("Geben sie die Artikelnummer des gekauften Artikels ein: ");
  double artikelpreis;
  artikelpreis = Artpreise (artnr);
  System.out.println ("Der Artikel kostet: " + artikelpreis);
  }
  }


   static double Artpreise (int artnr) {


    switch (artnr) {


    case 1: return 5.99;
    break;
    case 2: return 6.99;
    break;
    case 3: return 7.99;
    break;
    case 4: return 8.99;
    break;
    case 5: return 9.99;
    break;
    default: return "nicht vorhanden"
    break;
    }
    }

Fehlermeldung:

Java:
Compiliere H:\Anwendungsdaten\VersuchPreise.java mit Java-Compiler
VersuchPreise.java:17:11: 'class' or 'interface' expected
   static double Artpreise (int artnr) {
          ^
1 error
 
Kein Wunder bei der Einrückung :autsch:

Java:
  System.out.println ("Der Artikel kostet: " + artikelpreis);
  }
  }

Hier schließt du nicht nur die main-Methode, sondern gleich die ganze Klasse. Einrückung ist das A und O !
 
Meinen IT-Sys Lehrer, ok, ich hab das jetzt mal umgeschrieben, und jetzt funzt gar nichts mehr:

Java:
public class VersuchPreise
          {
          public static void main (String[]args)
          {



  //Die Eingabewerte erste Artikelnummer danach die Menge die gekauft wurde
  int artnr = IO.readInt ("Geben sie die Artikelnummer des gekauften Artikels ein: ");
  double artikelpreis;
  artikelpreis = Artpreise (artnr);
  System.out.println ("Der Artikel kostet: " + artikelpreis);
  }



   static double Artpreise (int artnr) {


    switch (artnr) {


    case 1: return 5.99;
    break;
    case 2: return 6.99;
    break;
    case 3: return 7.99;
    break;
    case 4: return 8.99;
    break;
    case 5: return 9.99;
    break;
    default: return 200.00;

    }
    }
    }

Fehlermeldung:

Java:
Compiliere H:\Anwendungsdaten\VersuchPreise.java mit Java-Compiler
VersuchPreise.java:24:5: unreachable statement
    break;
    ^
VersuchPreise.java:26:5: unreachable statement
    break;
    ^
VersuchPreise.java:28:5: unreachable statement
    break;
    ^
VersuchPreise.java:30:5: unreachable statement
    break;
    ^
VersuchPreise.java:32:5: unreachable statement
    break;
    ^
VersuchPreise.java:36:5: missing return statement
    }
    ^
6 errors
 
welchen Sinn macht es denn nach einem Return-Statement ein break zu setzen.
Außerdem kann man in einer Methode
Code:
static double Artpreise(int artnr)
nicht als Default-Wert dann einen String zurückgeben, wenn ein Double gefordert ist!
Sofern du die Klasse [c]IO[/c] kennst und darauf zugreifen kannst, sollte das unten zumindest kompilieren!

Java:
public class VersuchPreise {
	public static void main(String[] args) {

		// Die Eingabewerte erste Artikelnummer danach die Menge die gekauft
		// wurde
		int artnr = IO
				.readInt("Geben sie die Artikelnummer des gekauften Artikels ein: ");
		double artikelpreis;
		artikelpreis = Artpreise(artnr);
		System.out.println("Der Artikel kostet: " + artikelpreis);
	}

	static double Artpreise(int artnr) {

		switch (artnr) {

		case 1:
			return 5.99;
		case 2:
			return 6.99;
		case 3:
			return 7.99;
		case 4:
			return 8.99;
		case 5:
			return 9.99;
			// default: return "nicht vorhanden"
		default:
			return 0.0;
		}
	}
}

das sagt dir auch deine Fehlermeldung:
wenn eine Methode irgendwas "returned", dann wird sie verlassen...deswegen sind deinen ganzen [c]break[/c] -Anweisungen [c]unreachable statement[/c]
 
Zuletzt bearbeitet:
Wie soll break erreicht werden, wenn durch return sowieso die ganze Methode verlassen wird?
Warum der nachm switch Block nochn return haben will, obwohl du einen default-Block hast, weiß ich nicht, aber scheint so zu sein^^
 
Moin,

wie zuvor schon mehrfach geschrieben wurde:
rücke Deinen Code vernünftig ein, dann siehst Du auch, was passiert (spätestens beim mehreren hundert oder gar tausend Zeilen blickst Du sonst nicht mehr durch)
Java:
public class VersuchPreise
{
	public static void main (String[]args)
	{
		//Die Eingabewerte erste Artikelnummer danach die Menge die gekauft wurde
		int artnr = IO.readInt ("Geben sie die Artikelnummer des gekauften Artikels ein: ");
		double artikelpreis;
		artikelpreis = Artpreise (artnr);
		System.out.println ("Der Artikel kostet: " + artikelpreis);
	}
} // ENDE der Klasse !! Rest ist unreachable !!
 
 
static double Artpreise (int artnr) 
{
	switch (artnr) 
	{
 	case 1: 
	return 5.99;

	case 2: 
	return 6.99;
	
	case 3: 
	return 7.99;

	case 4: 
	return 8.99;

	case 5:
	return 9.99;

	default:
	return "nicht vorhanden"
	}
}

Jetzt klar ??

Gruß
Klaus
 
Java:
import javax.swing.JOptionPane;

public class TiereApp
{
    public static void main (String[]args)
    {
        //Die Eingabewerte erste Artikelnummer danach die Menge die gekauft wurde
    	int artnr = Integer.parseInt (JOptionPane.showInputDialog("Geben sie die Artikelnummer des gekauften Artikels ein: "));

        System.out.println ("Der Artikel kostet: " + Artpreise (artnr));
    }
	 
	static double Artpreise (int artnr) 
	{
	    switch (artnr) 
	    {
		    case 1: 
		    return 5.99;
		 
		    case 2: 
		    return 6.99;
		    
		    case 3: 
		    return 7.99;
		 
		    case 4: 
		    return 8.99;
		 
		    case 5:
		    return 9.99;
		 
		    default:
		    return 0.00;
	    }//ende switch
	}//ende artpreise
}//TierApp
 
Habe das ganze noch ein bisschen optimiert 🙂

Ach ja und das mit dem Formatieren. Wenn du Eclipse verwendest, einfach mal CTRL + SHIFT + F. Dann wird der Code automatisch formatiert und an der richtigen Stelle eingerückt.

Java:
import javax.swing.JOptionPane;

public class TiereApp {
	private static double grundPreis = 4.99;

	public static void main(String[] args) {
		// Die Eingabewerte erste Artikelnummer danach die Menge die gekauft
		// wurde
		int artnr = Integer
				.parseInt(JOptionPane
						.showInputDialog("Geben sie die Artikelnummer des gekauften Artikels ein: "));

		System.out.println("Der Artikel kostet: " + computeArtPreise(artnr));
	}

	static double computeArtPreise(int artnr) {
		return grundPreis + (artnr * 1);
	}
}
 

Zurück
Oben