# For-Anweisung Hausaufgabe



## anfänger2012 (13. Nov 2011)

Hallo leute,
ich bin ganz neu in Java und brauche für meine Hausaufgabe hilfe 

erstmal die Aufgabe :

•erstelle eine For-Schleife (RefundFor) Programm für die Leergut-Rückgabe
---------------

mit der for schleife komme ich leider nicht klar.... wahrscheinlich ist auch die if anweisung 
innerhalb der for schleife bei mir falsch ..... könnt ihr mir da bitte weiter helfen ???

ich hab es schonmal soweit programmiert --->

Hier mein Java Programm :


```
public class RefundFor {

  public static void main(String[] args) {
  
    int flasche = 20 ;
    int leereKiste = 500 ;               // Pfand umgerechnet in Cent, 5€=500Cent
	int volleKiste = 500+(9*flasche) ;  // 500Cent + Pfand von 9 Flaschen
	
	{
	  Out.println("Leergutannahme:");
	  Out.println("   1    leere Kiste (5 Euro)") ;
	  Out.println("   2    volle Kiste (5 Euro zzgl. 9 mal Flaschenpfand)") ;
	  Out.println("   3    Flasche (20 Cent)") ;
	  Out.println("   0    Eingabe beenden") ;
	
	}
	
	Out.print("Naechste Eingabe:");
	int pfand ;
	int eingabe ;
	
	pfand = 0 ;
	
	for( 
	    (if(eingabe==1) pfand = pfand+leereKiste ;  
	     if(eingabe==2) pfand = pfand+volleKiste ;
             if(eingabe==3) pfand = pfand+flasche ;)
		 
		( eingabe != 0 ) ;
		
		(Out.print("Naechste Eingabe:");
	         eingabe = In.readInt();)
	     )
		
		
    int preis  = pfand/100 ;    
	int preis2 = pfand % 100 ;  // Cent wird ausgerechnet
	
	
	Out.print("Sie erhalten " +preis+ " Euro und "+preis2+ " Cent Pfand");
		
  }

}
```


Danke schonmal !


----------



## Camill (13. Nov 2011)

Hier kannst du dir den Aufbau einer for-Schleife noch einmal anschauen.

Wie auch in deiner letzten Aufgabe(while-Schleife) muss die ganze Abarbeitung in der for-Schleife geschehen, für den Schleifenkopf müsstest du dir eine Bedingung ausdenken. Möglich wäre eine Endlosschleife die du mithilfe von "break;" wieder verlassen kannst.


----------



## anfänger2012 (13. Nov 2011)

Danke Camill,


ich werde es mir gleich durchlesen....

ich habe zwar ein java buch, aber dort ist es kurz und sehr schlecht erklärt 


danke nochmal für den link


----------



## anfänger2012 (13. Nov 2011)

also ich habe das jetzt so gemacht nachdem ich es gelesen habe....
jetzt habe ich noch 2 fehlermeldungen, aber ich weiß leider nicht warum.


Zeile 13 : illegal star of expression
Zeile  7  : ´)´ expected


```
for( 
	
	    int pfand , pfand = 0;
		 
		 eingabe != 0  ;
		
		 Out.print("Naechste Eingabe:")
		 eingabe = In.readInt()  ;
	     
		 if(eingabe==1) pfand = pfand+leereKiste ;
	         if(eingabe==2) pfand = pfand+volleKiste ;
                 if(eingabe==3) pfand = pfand+flasche ;
		 )
```



und ist die for schleife jetzt soweit richtig ? ???:L

..


----------



## Camill (13. Nov 2011)

Der Aufbau der for-Schleife ist immernoch falsch, bsp:

```
for(Initialisieren; Bedingung/Testen; Inkrement/Dekrement) {
	//do something
}
```


----------



## anfänger2012 (13. Nov 2011)

aber wie soll ich denn in meinem beispiel ein inkrement/dekrement einbauen ??

testen und initialisieren ist ja denke ich soweit richtig .... :S


----------



## Camill (13. Nov 2011)

Ich sehe weder das Initialisieren noch das Testen der Bedingung in deiner for-Schleife, wie bereits in einem früheren Post erwähnt wäre eine Möglichkeit sich eine Endlosschleife zu bauen und diese durch ein 
	
	
	
	





```
break;
```
 zu verlassen sobald die Abbruchbedingung erfüllt ist(eingabe == 0).

Würde dann wiefolgt aussehen:

```
//endless loop
for(;;) {
	//[...]

	if(eingabe == 0) {
		break;
	}

	//[...]
}
```


----------



## anfänger2012 (13. Nov 2011)

ich darf aber laut meine professorin leider kein break benutzen   !

camill wenn ich ehrlich bin verstehe ich das einfach nicht ... was muss denn alles in die
for schleife rein (ohne fachbegriffe)  ???

bei meinem programm z.b. ....


----------



## Marcinek (13. Nov 2011)

Poste doch mal die gesamte Aufgabe. 

Mit dem einen Satz könnte alles und nix gemeint sein. 

Was soll die for Schleife machen?

@Camill: Das hat er schon da drin, aber sein dekrement Teil ist synaktisch inkorrekt.

@ TO: Die Frage nach "Ist das korrekt" kann dir dein Java Compiler + Interpreter genaustens sagen.


----------



## Camill (13. Nov 2011)

So dann hier einmal eine komplette Lösung:

```
public class RefundFor {
	
	public static void main(String[] args) {
		
		int flasche = 20 ;
		int leereKiste = 500 ;               // Pfand umgerechnet in Cent, 5€=500Cent
		int volleKiste = 500+(9*flasche) ;  // 500Cent + Pfand von 9 Flaschen
		int pfand = 0;
		
		{
			Out.println("Leergutannahme:");
			Out.println("   1    leere Kiste (5 Euro)") ;
			Out.println("   2    volle Kiste (5 Euro zzgl. 9 mal Flaschenpfand)") ;
			Out.println("   3    Flasche (20 Cent)") ;
			Out.println("   0    Eingabe beenden") ;
		}
		
		Out.print("Naechste Eingabe:");
		int eingabe = In.readInt();
		
		for(; eingabe != 0;) {
			if(eingabe == 1) pfand += leereKiste;
			if(eingabe == 2) pfand += volleKiste;
			if(eingabe == 3) pfand += flasche;
			
			Out.print("Naechste Eingabe:");
			eingabe = In.readInt();
		}
		
		int preis = pfand / 100;    
		int preis2 = pfand % 100;  // Cent wird ausgerechnet
		
		Out.println("Sie erhalten " +preis+ " Euro und "+preis2+ " Cent Pfand");
	}
}
```

Zur for-Schleife:
Sie wird weder Initialisiert oder Inkrementiert/Dekrementiert, durch 
	
	
	
	





```
eingabe != 0
```
 wird erreicht das bei jedem erneuten durchlauf der Schleife der Wert von 
	
	
	
	





```
eingabe
```
 geprüft wird(sobald dieser 0 entspricht wird die Schleife verlassen). Das Einlesen einer neuen Eingabe findet jedesmal am Schluss der Schleife statt, außerdem auch einmal vor der Schleife um überhaupt in die Schleife zu gelangen.


----------



## anfänger2012 (13. Nov 2011)

Camill hat gesagt.:


> Zur for-Schleife:
> Sie wird weder Initialisiert oder Inkrementiert/Dekrementiert, durch
> 
> 
> ...




genau das habe ich gebraucht !! DANKE  :toll:
den unterschied zur while schleife hatte ich nicht verstanden...
du hast es besser als das buch erklärt ... 

@ marcinek 
die aufgabe hatte ich am anfang gepostet, aber hat sich ja jetzt erledigt


----------

