if Abfrage innerhalb einer for-Schleife

  • Themenstarter Themenstarter MCP4ever
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
M

MCP4ever

Gast
Hallo zusammen.
Ich möchte in einem zweidimensionalen boolean Array (soll 10x10 sein) 25 "Felder" auf true setzen.
In der if-Abfrage soll geguckt werden ob das "Feld" auf false ist, wenn ja wird es auf true gesetzt.
Wenn nun das Feld aber schon true ist, soll er wieder in die for Schleife gehen, ohne i zu erhöhen, damit garantiert ist das 25 "Felder" auf true gesetzt sind am Ende.
Nun weiß ich nicht wie ich das hinbekomme. Mit "i--" scheine ich eine Endlosschleife zu bekommen.

Vielen Dank schon mal, MPC!
anbei der Code mit dem ich es versucht habe:

Code:
	public void markenSetzen(){
		spielfeld = new boolean [a][b];
		for (int i = 0; i<25; i++){
			int k = new Random().nextInt(a);
			int l = new Random().nextInt(a);
			if(spielfeld[k][l] = false){
			   spielfeld[k][l] = true;
			}else{
	                   i--;
			}
		}
	}
 
erstelle zunächst mal nicht 50 oder noch mehr Random-Objekte,
bei so wenig Nanosekunden zwischen den Erstellungen mag ich gar nicht mal ausschließen, dass diese immer die gleichen Zahlen liefern,
mit System.out.println gut zu prüfen,

außerdem solltest du genau untersuchen, ob nicht vielleicht das Feld schon voll ist,
dann wäre eine Endlosschleife verständlich,

anderenfalls sollte dieser Code, so gefährlich er auch ist, funktionieren


-----

> int k = new Random().nextInt(a);
> int l = new Random().nextInt(a);
ist bei l nicht b statt a gemeint?

> if(spielfeld[k][l] = false){

ach, da ist auch noch ein Fehler, == false muss es heißen

Code:
public class Test
{
    public static void main(String[] args) throws Exception
    {
        int a = 5;
        int b= 6;
        Random r = new Random();
        boolean[][]  spielfeld = new boolean[a][b];
        int count = 0;
        for (int i = 0; i < 25; i++)
        {
            count++;
            int k = r.nextInt(a);
            int l = r.nextInt(a);
            System.out.println(count+" i: "+i+", k: "+k+", l: "+l+", "+spielfeld[k][l]);
            Thread.sleep(100);
            if (spielfeld[k][l] == false)
            {
                spielfeld[k][l] = true;
            }
            else
            {
                i--;
            }
        }
        System.out.println("fertig");

    }
}
1 i: 0, k: 2, l: 0, false
2 i: 1, k: 3, l: 4, false
3 i: 2, k: 3, l: 1, false
4 i: 3, k: 2, l: 2, false
5 i: 4, k: 4, l: 3, false
6 i: 5, k: 3, l: 1, true
7 i: 5, k: 2, l: 2, true
8 i: 5, k: 4, l: 3, true
9 i: 5, k: 3, l: 3, false
10 i: 6, k: 1, l: 1, false
11 i: 7, k: 0, l: 0, false
12 i: 8, k: 3, l: 2, false
13 i: 9, k: 3, l: 0, false
14 i: 10, k: 3, l: 2, true
15 i: 10, k: 0, l: 4, false
16 i: 11, k: 2, l: 2, true
17 i: 11, k: 3, l: 2, true
18 i: 11, k: 0, l: 3, false
19 i: 12, k: 1, l: 4, false
20 i: 13, k: 0, l: 1, false
21 i: 14, k: 1, l: 1, true
22 i: 14, k: 0, l: 2, false
23 i: 15, k: 3, l: 1, true
24 i: 15, k: 4, l: 1, false
25 i: 16, k: 1, l: 2, false
26 i: 17, k: 2, l: 1, false
27 i: 18, k: 3, l: 2, true
28 i: 18, k: 0, l: 0, true
29 i: 18, k: 4, l: 0, false
30 i: 19, k: 1, l: 3, false
31 i: 20, k: 4, l: 3, true
32 i: 20, k: 0, l: 1, true
33 i: 20, k: 1, l: 2, true
34 i: 20, k: 4, l: 1, true
35 i: 20, k: 4, l: 4, false
36 i: 21, k: 1, l: 1, true
37 i: 21, k: 3, l: 4, true
38 i: 21, k: 0, l: 0, true
39 i: 21, k: 0, l: 4, true
40 i: 21, k: 1, l: 2, true
41 i: 21, k: 0, l: 2, true
42 i: 21, k: 0, l: 4, true
43 i: 21, k: 0, l: 0, true
44 i: 21, k: 0, l: 2, true
45 i: 21, k: 4, l: 3, true
46 i: 21, k: 0, l: 0, true
47 i: 21, k: 4, l: 0, true
48 i: 21, k: 4, l: 2, false
49 i: 22, k: 4, l: 3, true
50 i: 22, k: 4, l: 3, true
51 i: 22, k: 4, l: 3, true
52 i: 22, k: 2, l: 0, true
53 i: 22, k: 2, l: 3, false
54 i: 23, k: 1, l: 4, true
55 i: 23, k: 1, l: 0, false
56 i: 24, k: 1, l: 1, true
57 i: 24, k: 2, l: 1, true
58 i: 24, k: 3, l: 1, true
59 i: 24, k: 3, l: 3, true
60 i: 24, k: 3, l: 4, true
61 i: 24, k: 1, l: 2, true
62 i: 24, k: 2, l: 0, true
63 i: 24, k: 0, l: 4, true
64 i: 24, k: 3, l: 3, true
65 i: 24, k: 4, l: 0, true
66 i: 24, k: 0, l: 4, true
67 i: 24, k: 2, l: 2, true
68 i: 24, k: 2, l: 1, true
69 i: 24, k: 3, l: 1, true
70 i: 24, k: 2, l: 2, true
71 i: 24, k: 0, l: 4, true
72 i: 24, k: 1, l: 3, true
73 i: 24, k: 3, l: 0, true
74 i: 24, k: 1, l: 1, true
75 i: 24, k: 0, l: 3, true
76 i: 24, k: 3, l: 3, true
77 i: 24, k: 1, l: 0, true
78 i: 24, k: 3, l: 4, true
79 i: 24, k: 4, l: 4, true
80 i: 24, k: 2, l: 0, true
81 i: 24, k: 1, l: 0, true
82 i: 24, k: 2, l: 3, true
83 i: 24, k: 1, l: 0, true
84 i: 24, k: 2, l: 0, true
85 i: 24, k: 1, l: 0, true
86 i: 24, k: 4, l: 2, true
87 i: 24, k: 0, l: 2, true
88 i: 24, k: 0, l: 2, true
89 i: 24, k: 1, l: 1, true
90 i: 24, k: 2, l: 4, false
fertig

edit: doppelt
http://www.java-forum.org/de/viewtopic.php?t=71029
 
Tut mir leid wegen dem Doppelpost. Habe ich auch gesehen, konnte ich aber nicht mehr rückgängig machen.
Der Fehler war in der if-Abfrage "==" und nicht "="...

Ach wie dumm


Aber danke für die Bemühungen
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben