# continue macht ärger



## assault (20. Mrz 2008)

Hi @ all 

also bin momentan auf der arbeit uns soll java lernen, an sich nichts schlimmes aber iergendwie komme ich an der aufgabe

http://www.java-wi.de/uebungen/U-07.pdf

,ist die Aufgabe 7.4,

nicht weiter  :cry: 


```
public class monte_karlo_nights 
{
public static void main (String[]ages)
{
	int kap = 10000;
	boolean win = true;
	int satz = 10;
	
	while( kap >= 0);
	{
		if (kap>10000)
		{	if (win = true) 
				{satz = 10;
				}
			else {satz = satz*2;}
		}
		
		else {satz = (10000 - (kap*2));}

		if (satz > 1000){satz = 1000;}
		if (satz > kap){satz = kap;}


		int k =(int)(Math.random()*37);

		if (k == 0) continue;
		if (k%2 == 0){ win = true; kap = kap + satz;}
		else {win = false; kap = kap - satz;}
				
			
	}
		
		
	
		
		
	}
}
```
der code an sich müsste eigentlich nach meinem wissensstand funtzen, aber ich bekomme immer die Fehlermeldung  das er den continue in zeile 27 nicht aktzeptiert, sie wäre ausserhalb der schleife  :autsch:


----------



## SlaterB (20. Mrz 2008)

sie IST außerhalb der Schleife,
da die Schleife
while( kap >= 0); 
beim ; 10 Zeichen hinter dem while endet

-> Endlosschleife übrigens, sei froh dass es nicht läuft


----------



## assault (20. Mrz 2008)

SlaterB hat gesagt.:
			
		

> sie IST außerhalb der Schleife,
> da die Schleife
> while( kap >= 0);
> beim ; 10 Zeichen hinter dem while endet
> ...



wie kommst du darauf das es ne endlos schleife ist? wenn der Zähler(das kapital 0 erreicht) ist die schleife doch zu ende oder? Und dann muss ich doch einfach nur das ";" löschen?


----------



## SlaterB (20. Mrz 2008)

jo, ich meinte durch den Semikolon-Fehler wirds ne Endlosschleife,
das muss weg, dann dürfte alles gut sein (ohne näher die anderen 25 Zeilen anzuschauen)


----------



## assault (20. Mrz 2008)

ok danke ganz großes THX


----------



## assault (20. Mrz 2008)

bräuchte nochmal hilfe  :cry: 

das teil ist jetzt doch noch zu ner endlosschleife mutiert 



```
public class monte_karlo_nights 
{
public static void main (String[]ages)
{
	int kap = 10000;
	boolean win = true;
	int satz = 10;
	int roundcount= 0;
	
	while( kap >= 0)
	{
		if (kap>10000)
		{	if (win = true) 
				{satz = 10;
				}
			else {satz = satz*2;}
		}
		
		else {satz = (10000 - (kap*2));}

		if (satz > 1000){satz = 1000;}
		if (satz > kap){satz = kap;}


		int k =(int)(Math.random()*37);

		if (k == 0) continue;
		if (k%2 == 0){ win = true; kap = kap + satz;}
		else {win = false; kap = kap - satz;}
	
	roundcount = roundcount +1;
	 System.out.println("Runde: " + roundcount + "  Kapital: " + kap+ " wurf: " + k + " Einsatz: " + satz );
				
			
	}
		
		
	
		
		
	}
}
```

und zwar schein er nicht wirklich erkennen zu wollen das er auch mal verlieren muss und schein bar kann er auch nicht die erste "if(win = true)" auslesen zu können zumindest laut eclipse, den der sagt "boolean win = true" würde nie gelesen werden 

hier noch die letzten durchläufe der schleife befor ich gestoppt habe ....

Runde: 143463  Kapital: 28260 wurf: 1 Einsatz: 10
Runde: 143464  Kapital: 28250 wurf: 31 Einsatz: 10
Runde: 143465  Kapital: 28240 wurf: 15 Einsatz: 10
Runde: 143466  Kapital: 28250 wurf: 6 Einsatz: 10
Runde: 143467  Kapital: 28240 wurf: 7 Einsatz: 10
Runde: 143468  Kapital: 28230 wurf: 9 Einsatz: 10
Runde: 143469  Kapital: 28240 wurf: 4 Einsatz: 10
Runde: 143470  Kapital: 28230 wurf: 13 Einsatz: 10
Runde: 143471  Kapital: 28220 wurf: 21 Einsatz: 10


----------



## SlaterB (20. Mrz 2008)

if(win = true)

->

if(win == true)


----------



## assault (20. Mrz 2008)

Sorry wenn ich euch nerfe aber jetzt änert sich das Kapital gar nicht und der einsatzt ist immer null  ich könnt heuelen sitzt schon fast dne ganzen tag dran es  zum laufen zu bekommen


----------



## SlaterB (20. Mrz 2008)

du musst schon sagen was dein Programm machen soll oder nicht,
was richtig und was falsch ist


```
public class Test
{

    public static void main(String[] ages)
        throws Exception
    {
        int kap = 10000;
        boolean win = true;
        int satz = 10;

        while (kap >= 0)
        {
            if (kap > 10000)
            {
                if (win == true)
                {
                    satz = 10;
                }
                else
                {
                    satz = satz * 2;
                }
            }
            else
            {
                satz = (10000 - (kap * 2));
            }


            if (satz > 1000)
            {
                satz = 1000;
            }
            if (satz > kap)
            {
                satz = kap;
            }


            int k = (int)(Math.random() * 37);
            System.out.println("kap: " + kap + ", satz: " + satz + ", k: " + k);
            Thread.sleep(300);

            if (k == 0) continue;
            if (k % 2 == 0)
            {
                win = true;
                kap = kap + satz;
            }
            else
            {
                win = false;
                kap = kap - satz;
            }
        }
    }
}



Ausgabe:
kap: 10000, satz: -10000, k: 1
kap: 20000, satz: -20000, k: 33
kap: 40000, satz: -40000, k: 21
kap: 80000, satz: -80000, k: 32
kap: 0, satz: 0, k: 1
kap: 0, satz: 0, k: 10
kap: 0, satz: 0, k: 11
kap: 0, satz: 0, k: 28
kap: 0, satz: 0, k: 30
kap: 0, satz: 0, k: 23
kap: 0, satz: 0, k: 36
```

wenn das Kapital 0 ist, dann ist die Schleife in einer Endlosschleife ja,
was soll man dazu sagen?
breche bei 0 ab oder tue irgendwas, du hast die freie Wahl es nach deinen Wünschen zu programmieren


edit: halt, ich war beim Code ganz oben, scheint sich ja inzwischen geändert zu haben,
werden dann gleich noch dieses Posting hier editieren

edit 2: auch bei der neuen Version wird bei Kaptial <= 10000 am Anfang ein 'Satz' von -10000 gewählt,
das Kapital geht schnell auf 0 runter


----------



## assault (20. Mrz 2008)

?????

bei mir siehtdie Ausgabe bisshcen anders aus??? *confused*

Runde: 2820  Kapital: 10000 wurf: 23 Einsatz: 0
Runde: 2821  Kapital: 10000 wurf: 5 Einsatz: 0
Runde: 2822  Kapital: 10000 wurf: 1 Einsatz: 0
Runde: 2823  Kapital: 10000 wurf: 28 Einsatz: 0
Runde: 2824  Kapital: 10000 wurf: 31 Einsatz: 0
Runde: 2825  Kapital: 10000 wurf: 19 Einsatz: 0
Runde: 2826  Kapital: 10000 wurf: 7 Einsatz: 0
Runde: 2827  Kapital: 10000 wurf: 19 Einsatz: 0
Runde: 2828  Kapital: 10000 wurf: 33 Einsatz: 0

bei mir wenn ich ihn durchlaufen lasse zieht der gar nichts vom Kapital ab 


```
public class monte_karlo_nights 
{
public static void main (String[]ages)
{
	int kap = 10000;
	boolean win = true;
	int satz = 10;
	int roundcount= 0;
	
	while( kap >= 0)
	{
	
		if (kap>10000)
		{	if (win == true) 
				{satz = 10;
				}
			else {satz = satz*2;}
		}
		
		else {satz = ((10000 - kap)*2);}

		if (satz > 1000){satz = 1000;}
		if (satz > kap){satz = kap;}


		int k =(int)(Math.random()*37);

		if (k == 0) continue;
		if (k%2 == 0){ win = true; kap = kap + satz;}
		else {win = false; kap = kap - satz;}
	
	roundcount = roundcount +1;
	 System.out.println("Runde: " + roundcount + "  Kapital: " + kap+ " wurf: " + k + " Einsatz: " + satz );
				
			
	}	
		
}
}
```


----------



## SlaterB (20. Mrz 2008)

ja weil du zwischendurch den Code änderst,
wie soll ich denn bitte deinen privaten Code vorherahnen?..

statt
> satz = (10000 - (kap * 2)); 
hast du nun also
> satz = ((10000 - kap) * 2);

und jetzt überlege mal, was da am Anfang bei kap = 10000 rauskommt?
richtig, 0, Einsatz 0, nix passiert

also wenn du solche 3 Sekunden-Denker nicht drauf hast..


----------



## assault (20. Mrz 2008)

SlaterB hat gesagt.:
			
		

> ja weil du zwischendurch den Code änderst,
> wie soll ich denn bitte deinen privaten Code vorherahnen?..
> 
> statt
> ...



sorry dachte hätte den aktuelsten Code schon gepostet

Edit der geht doch aber satz = ((10000 - kap) * 2); erste rein wenn das Kap  kleiner 1000 ist deshalb dürfte es nach der ersten runde ja nicht auf null kommmen und auch nicht beim ersten durchlauf hier in dieser schleifen stelle weil da kommt er ja erst rein wenn das kap uter 10000 ist zum beispiel nur noch 9000 dann erstellt er einen einsatzt von 2000 und korigiert ihn nochmal auf 1000 runter ... oder sollte er zumindest


----------



## Gast (27. Mrz 2008)

Hallo,

keine Ahnung, ob Du noch einen Hinweis brauchst...
Deine erstes if lautet (kap>10000). Da 10000 aber nicht größer 10000 ist, geht er gleich in den else-Teil und rechnet nun dort mit (10000-10000)*2. Da die Anweisung auch lautet "Wenn Sie im Besitz von MINDESTENS 10000 GE sind", sollte dein erstes if-Statement 
if (kap >= 10000) 
lauten. Ausserdem solltest Du beachten, dass im Gewinnfall das Doppelte des Gesetzten ausgezahlt werden soll und Du ja auch das Kapital vorher und nachher ausgeben sollst.

MfG
Stefan


----------



## Guest (27. Mrz 2008)

Gast hat gesagt.:
			
		

> Hallo,
> 
> keine Ahnung, ob Du noch einen Hinweis brauchst...
> Deine erstes if lautet (kap>10000). Da 10000 aber nicht größer 10000 ist, geht er gleich in den else-Teil und rechnet nun dort mit (10000-10000)*2. Da die Anweisung auch lautet "Wenn Sie im Besitz von MINDESTENS 10000 GE sind", sollte dein erstes if-Statement
> ...



Jo dankeschön aber mittlerweile leuft alles


----------

