# Return Befehl in Methode



## inq51 (9. Nov 2011)

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? 


```
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!


----------



## Gast2 (9. Nov 2011)

die Variable 
	
	
	
	





```
gesamtkosten
```
 ist nur innerhalb der Methode 
	
	
	
	





```
prepaid
```
 gültig.
Du gibst den Wert der Variable aber in der Methode zurück, also kannst du folgendes in der main schreiben:


```
int minuten = 100;
int sms = 100;
int gesamt = prepaid(minuten, sms); // Methode aufrufen und Rückgabewert speichern
System.out.println(gesamt);
```


----------



## chalkbag (9. Nov 2011)

```
int kostensms = 190;                          // 190 Cent/SMS
        int kostentelefon = 150;                     // 150 Cent/Minute
```

Wow ist das teuer bei euch :joke: (Tschuldigung )


----------



## vatras (9. Nov 2011)

"Kostensms" und "Kostentelefon" würde ich als Exemplarvariablen deklarieren.


----------



## insane80 (9. Nov 2011)

vatras hat gesagt.:


> "Kostensms" und "Kostentelefon" würde ich als Exemplarvariablen deklarieren.


In Java spricht man wohl eher von *Instanzvariablen*


----------



## bronks (9. Nov 2011)

insane80 hat gesagt.:


> In Java spricht man wohl eher von *Instanzvariablen*


Ist das eine Membervariable?


----------



## vatras (9. Nov 2011)

insane80 hat gesagt.:


> In Java spricht man wohl eher von *Instanzvariablen*



Ist das nicht das gleiche? =P


----------



## inq51 (9. Nov 2011)

So hab jetzt ein bisschen weitergemacht und hab wieder probleme mit den methoden:

```
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?


----------



## vatras (9. Nov 2011)

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


----------



## qowaz (9. Nov 2011)

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.


```
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);
        }
}
```


----------



## inq51 (9. Nov 2011)

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 


```
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;
```


----------



## Landei (9. Nov 2011)

Was ist an "Variable außerhalb des Blockes definieren" so schwer zu verstehen?

```
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;
```


----------



## inq51 (9. Nov 2011)

danke


----------



## Heizkörper (13. Nov 2011)

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


----------

