For-Anweisung Hausaufgabe

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 :

Java:
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

Bekanntes Mitglied
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.
 
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 ;)
 
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

Java:
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

Bekanntes Mitglied
Der Aufbau der for-Schleife ist immernoch falsch, bsp:
Java:
for(Initialisieren; Bedingung/Testen; Inkrement/Dekrement) {
	//do something
}
 

Camill

Bekanntes Mitglied
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
Code:
break;
zu verlassen sobald die Abbruchbedingung erfüllt ist(eingabe == 0).

Würde dann wiefolgt aussehen:
Java:
//endless loop
for(;;) {
	//[...]

	if(eingabe == 0) {
		break;
	}

	//[...]
}
 
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. ....
 
M

Marcinek

Gast
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

Bekanntes Mitglied
So dann hier einmal eine komplette Lösung:
Java:
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
Code:
eingabe != 0
wird erreicht das bei jedem erneuten durchlauf der Schleife der Wert von
Code:
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.
 
Zur for-Schleife:
Sie wird weder Initialisiert oder Inkrementiert/Dekrementiert, durch
Code:
eingabe != 0
wird erreicht das bei jedem erneuten durchlauf der Schleife der Wert von
Code:
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.


genau das habe ich gebraucht !! DANKE :D :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 :)
 

Neue Themen


Oben