Return Befehl in Methode

inq51

Mitglied
Hi!
Ich bin ein absoluter Anfänger was Java betrifft. Ich möchte die "gesamtkosten" in meiner main-Methode benutzen aber verstehe nicht warum der Compiler die "gesamtkosten" keiner variable zuordnen kann. Ist mein return befehl falsch oder funktioniert er anders?

Java:
public class Tarife {

	public static int prepaid(int minuten, int sms){		
		int kostensms = 190;	                      // 190 Cent/SMS
		int kostentelefon = 150;                     // 150 Cent/Minute
		int gesamtkosten = minuten * kostentelefon + sms * kostensms;
		return gesamtkosten;
				                                   }
	public static void main(String[] args) {
		int minuten = 100;
		int sms = 100;
		System.out.println(gesamtkosten);
		}
}

Danke im Vorraus!
 
die Variable
Code:
gesamtkosten
ist nur innerhalb der Methode
Code:
prepaid
gültig.
Du gibst den Wert der Variable aber in der Methode zurück, also kannst du folgendes in der main schreiben:

Java:
int minuten = 100;
int sms = 100;
int gesamt = prepaid(minuten, sms); // Methode aufrufen und Rückgabewert speichern
System.out.println(gesamt);
 
Java:
        int kostensms = 190;                          // 190 Cent/SMS
        int kostentelefon = 150;                     // 150 Cent/Minute

Wow ist das teuer bei euch :joke: (Tschuldigung 😳)
 
So hab jetzt ein bisschen weitergemacht und hab wieder probleme mit den methoden:
Java:
public class Tarife {

	public static int prepaid(int minuten, int sms){		
		int anzahlsms= 100;
		int anzahlminuten = 25;
		int kostensms = 19;	 // 19 Cent/SMS
		int kostenminuten = 15; // 15 Cent/Minute
		int gesamtkosten = anzahlminuten * kostenminuten + anzahlsms * kostensms;
		return gesamtkosten;
												   }
	public static int vertrag(int minuten, int sms){		
		int anzahlsms = 100;
		int anzahlminuten= 100;
		int kostensms = 19;	 // 19 Cent/SMS
		int kostenminuten = 29; // 29 Cent/Minute
		final int  GRUNDPREIS = 1745;	// 17,45€
		final int  FREIMINUTEN = 120;	// 120 Minuten
		final int  FREISMS = 40;		// 40 SmS
		
		if (anzahlsms > FREISMS){
			int differenz = anzahlsms - FREISMS;
			int smskosten = differenz * kostensms;}
			
		
		if (anzahlminuten > FREIMINUTEN){
			int differenz = anzahlminuten - FREIMINUTEN;
			int gespraechskosten = differenz * kostenminuten;}
		
		int gesamtkosten = GRUNDPREIS + smskosten + gespraechskosten;	
		
                return gesamtkosten;
			}
		
	
	public static void main(String[] args) {
		int prepaidgesamt = prepaid(anzahlminuten, anzahlsms);
		System.out.println("Prepaid :" +prepaidgesamt);
		int vertraggesamt = vertrag(anzahlminuten, anzahlsms);
		System.out.println("Vertrag :" +vertraggesamt);
		}
}

Wie schaffe ich es die "smskosten" und die "gespraechskosten" auch auserhalb der "if-blöcke" zu benutzen? Oder muss ich die gesamtkosten in die if blöcke mit reinnehmen(wenn ja wie?)
Und in meiner main-Methode kennt er die "anzahlminuten" und die "anzahlsms" nicht. Kann ich diese aus den anderen Methoden benutzen?
 
Zuletzt bearbeitet:
Vll solltest du dich erstmal durch n paar Tutorials und Workshops lesen bevor du drauf los programmierst....

Zu deiner Frage:

Einfach die Variable außerhalb des Blockes definieren 😉
 
Ich glaube du meinst das so:

In der main-Methode übergibts du einfach die Anzahl an Minuten und SMS an die jeweiligen Funktionen prepaid und vertrag. Du musst diese dann nicht mehr innerhalb der Methode deklarieren.

Java:
public class Tarife {
 
    public static int prepaid(int anzahlminuten, int anzahlsms){ 
        int kostensms = 19;  // 19 Cent/SMS
        int kostenminuten = 15; // 15 Cent/Minute
        int gesamtkosten = anzahlminuten * kostenminuten + anzahlsms * kostensms;
        return gesamtkosten;
                                                   }
    public static int vertrag(int anzahlminuten, int anzahlsms){ 
        int kostensms = 19;  // 19 Cent/SMS
        int kostenminuten = 29; // 29 Cent/Minute
        final int  GRUNDPREIS = 1745;   // 17,45€
        final int  FREIMINUTEN = 120;   // 120 Minuten
        final int  FREISMS = 40;        // 40 SmS
        
        if (anzahlsms > FREISMS){
            int differenz = anzahlsms - FREISMS;
            int smskosten = differenz * kostensms;}
            
        
        if (anzahlminuten > FREIMINUTEN){
            int differenz = anzahlminuten - FREIMINUTEN;
            int gespraechskosten = differenz * kostenminuten;}
        
        int gesamtkosten = GRUNDPREIS + smskosten + gespraechskosten;   
        
                return gesamtkosten;
            }
        
    
    public static void main(String[] args) {
        int prepaidgesamt = prepaid(100,25);
        System.out.println("Prepaid :" +prepaidgesamt);
        int vertraggesamt = vertrag(100,100);
        System.out.println("Vertrag :" +vertraggesamt);
        }
}
 
ja genau das meinte ich, danke 🙂

und jetzt muss ich noch die "smskosten" und die "gespraechskosten" außerhalb der "if-blöcke" definiert bekommen. könnt ihr mir das auch noch sagen oder einen tipp geben? danke 🙂

Java:
if (anzahlsms > FREISMS){
            int differenz = anzahlsms - FREISMS;
            int smskosten = differenz * kostensms;}
            
        
        if (anzahlminuten > FREIMINUTEN){
            int differenz = anzahlminuten - FREIMINUTEN;
            int gespraechskosten = differenz * kostenminuten;}
        
        int gesamtkosten = GRUNDPREIS + smskosten + gespraechskosten;
 
Zuletzt bearbeitet:
Was ist an "Variable außerhalb des Blockes definieren" so schwer zu verstehen?
Java:
        int smskosten = 0;
        if (anzahlsms > FREISMS){
            int differenz = anzahlsms - FREISMS;
            smskosten = differenz * kostensms;}
            
        int gespraechskosten = 0;
        if (anzahlminuten > FREIMINUTEN){
            int differenz = anzahlminuten - FREIMINUTEN;
            gespraechskosten = differenz * kostenminuten;}
        
        int gesamtkosten = GRUNDPREIS + smskosten + gespraechskosten;
 
Nur so nebenbei lieber Threadersteller: Du solltest deine Übungsaufgaben ALLEINE machen, nicht in irgendwelchen Foren posten. Ich schätze da wird die Tarife Aufgabe mit null Punkten bewertet 😉
 

Zurück
Oben