Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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");
}
}
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 "="...