# Hausaufgaben-Hilfe Java



## anfänger2012 (12. Nov 2011)

Hallo leute,
 ich bin ganz neu in Java und brauche für meine Hausaufgabe hilfe 
hatte erst nur 5 std. java unterricht und bin deswegen unerfahren.

erstmal die Aufgabe :

•erstelle eine do-while-Schleife (RefundDo) Programm für die Leergut-Rückgabe


Hier mein Java Programm :


```
public class RefundDo {

  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 eingabe = In.readInt();
	
	int pfand = 0;
	
	do {
	   pfand=0 ;
	   
	   if(eingabe==1) pfand = pfand+leereKiste ;
	   
	   if(eingabe==2) pfand = pfand+volleKiste ;
	   
	   if(eingabe==3) pfand = pfand+flasche ;
	   
	}
	while( eingabe == 0);
	
	int preis  = pfand/100 ;
	int preis2 = pfand % 100 ;
	
	
	Out.print("Sie erhalten " +preis+ " Euro und "+preis2+ " Cent Pfand");
	
	
	}

}
```


hier habe ich die do-Anweisung wahrscheinlich falsch erstellt. denn es muss doch eigentlich solange
abfragen bis ich bei der eingabe 0 eingebe. aber bei mir rechnet er es sofort aus.
ich konnte mein fehler leider nicht finden ... 

schonmal danke !


----------



## Camill (12. Nov 2011)

anfänger2012 hat gesagt.:


> Hallo leute,
> hier habe ich die do-Anweisung wahrscheinlich falsch erstellt. denn es muss doch eigentlich solange
> abfragen bis ich bei der eingabe 0 eingebe.



Vollkommen richtig 
Das while müsste so aussehen 
	
	
	
	





```
while( eingabe != 0);
```
 - somit wird die Schleife solange durchlaufen wie die Eingabe nicht 0 entspricht. Außerdem muss das Einlesen der Eingabe ebenfalls in der Schleife abgearbeitet werden.


----------



## anfänger2012 (12. Nov 2011)

Danke Camill,



> Das while müsste so aussehen while( eingabe != 0);


Stimmt, dass war jetzt bisschen dumm von mir 


also ich hab das jetzt so gemacht :


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


jetzt bekomme ich aber die folgende fehlermeldung :

Zeile 15 : cannot find symbol


was habe ich wieder falsch gemacht ?


----------



## Gast2 (12. Nov 2011)

Deine Variable eingabe ist nur innerhalb der Schleife gültig, das musst du außerhalb deklarieren.


----------



## Camill (12. Nov 2011)

Die Variable 'eingabe' müsstest du außerhalb der do-while Schleife deklarieren.


----------



## anfänger2012 (13. Nov 2011)

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


jetzt steht bei mir : 

eingabe is already defined in main<String[]>
int eingabe = In.readInt<>;

...


----------



## Camill (13. Nov 2011)

Außerhalb der Schleife: 
	
	
	
	





```
int eingabe;
```
Innerhalb der Schleife: 
	
	
	
	





```
eingabe = In.readInt();
```

Die Fehlermeldung gibt an das die Variable 2mal deklariert wurde.


----------



## anfänger2012 (13. Nov 2011)

Leute erstmal DANKE ! 

jetzt habe ich nur noch ein problem, bei mir kommt als ergebniss ( euro und cent ) nur 0 raus 
es wird irgendwie nicht zusammen gerechnet.


```
public class RefundDo {

  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 eingabe = In.readInt() ;
	int pfand ;
	
	
	do {
	    
	   Out.print("Naechste Eingabe:");
	   eingabe = In.readInt();
	   
	   pfand = 0 ;
	   
	   if(eingabe==1) pfand = pfand+leereKiste ;
	   if(eingabe==2) pfand = pfand+volleKiste ;
	   if(eingabe==3) pfand = pfand+flasche ;
	   
	}
	while( eingabe != 0);
	
	int preis  = pfand/100 ;
	int preis2 = pfand % 100 ;
	
	
	Out.print("Sie erhalten " +preis+ " Euro und "+preis2+ " Cent Pfand");
	
  }

}
```


----------



## Gast2 (13. Nov 2011)

```
do {
       [...]
       pfand = 0 ;
       [...]       
    } while(eingabe != 0);
```
Vielleicht fällt dir ja was auf.

Nen genereller Hinweis: Wenn du dir irgendwas nicht genau erklären kannst dann benutze entweder den Debugger oder setze dir ein paar Sysouts rein.


----------



## anfänger2012 (13. Nov 2011)

hallo EikeB,

aber was muss ich denn pfand zuweisen ??


und mit debugger kenne ich mich nicht aus, wie oben geschrieben bin ich ganz neu in java  
aber vielleicht könntest du es mir ja kurz erklären, falls es nicht so kompliziert ist 

danke schonmal...


----------



## Gast2 (13. Nov 2011)

Du setzt bei jedem Schleifendurchlauf Pfand wieder auf 0. Die Variable pfand musst du doch nur ganz am Anfang einmal auf 0 setzen, danach wird der Wert doch stetig erhöht.
Also VOR der Schleife einmal pfand mit 0 initialisieren und danach in der Schleife nur noch hochzählen.



> aber vielleicht könntest du es mir ja erklären, falls es nicht so kompliziert ist


Dazu gibts genug Tutorials im Internet, bestimmt auch für deine IDE.


----------



## anfänger2012 (13. Nov 2011)

schau mal wenn ich jetzt z.b. zwei mal die 1 eingebe kommt bei mir nur 5 raus... also die eingaben nach der ersten 
eingabe werden nicht mehr drauf gerechnet....


und wegen dem debugger werde ich mich morgen mal informieren ... 


danke!


----------



## Gast2 (13. Nov 2011)

Du verarbeitest die erste Eingabe ja auch gar nicht 
Die Eingabe vor der Schleife kann doch da raus, was soll die da? Du musst da lediglich die Variable deklarieren.


----------



## anfänger2012 (13. Nov 2011)

Endlich geht es !!! Yuhuuu ... 

ich hätte nicht gedacht, dass java so schwer ist 

aber es macht trotzdem SPAß ! :toll:

------

da ich neu im forum bin hätte ich mal eine frage und zwar sollte ich falls
ich bei anderen hausaufgaben fragen habe am besten ein neues thema öffnen oder 
kann ich ruhig wieder hier reinschreiben ?


-----


----------



## Gast2 (13. Nov 2011)

Soo schwer ist Java gar nicht  Man muss nur dran bleiben.

Erstell für zukünftige Fragen jeweils nen neues Thema. Da hast du bessere Chancen dass du Antworten bekommst.


----------



## anfänger2012 (13. Nov 2011)

ok , nochmal DANKE !


----------

