# Wie erzeuge ich eine Zufallszahl zwischen 0 und 8 ?



## howtoadd (20. Jun 2008)

hallo an alle....

also ich soll das minesweeper programmieren, das 9x9 groß ist, das feld dazu habe ich, nun möchte ich die mienen
reinsetzen, es sollen 10 minen im feld zufällig verteilt werden. 
und das ist auch schon mein problem  :? 

mein ansatz:


```
int zufall1 = 0 ;
int zufall2 = 0 ;

		for (int j = 10; j >= 1; j--) {
			zufall1 = (int) (Math.random()*10);
			zufall2 = (int) (Math.random()*10);
			bt[zufall1][zufall2].setText("*");
		}
```

so wie das jetzt ist, hätte ich eine fehlermeldung, da ich auf etwas zugreifen will, das nicht geht 

wie krieg ich das nun hin?  :bahnhof: 

das ist mein feld:

```
public class MineFeld extends JPanel implements MouseListener {
	JPanel bt[][] = new JPanel[9][9];

	public MineFeld() {
		setLayout(new BorderLayout());
		JPanel panel = new JPanel(new GridLayout(9, 9));
		add(panel, BorderLayout.SOUTH);
		for (int i = 0; i < 9; i++) {
			for (int j = 0; j < 9; j++) {
				panel.add(bt[i][j] = new JPanel());
				bt[i][j].setBorder(BorderFactory.createLineBorder(Color.black));
				bt[i][j].setSize(300, 200);
				bt[i][j].setPreferredSize(new Dimension(50, 50));
				panel.add(bt[i][j]).addMouseListener(this);
			}}
		}
```

bin dankebar bür jeden tipp[/code]


----------



## Quaxli (20. Jun 2008)

Die Fehlermeldung wäre schön gewesen.
Vermutlich liegt es aber daran, daß in zeile 11 nur stehen müßte
bt_[j] = new JPanel();

Ansonsten frage ich mich, warum Du das mit JPanels realisierst? Da wären ja z. B. JButtons schon mal viel besser._


----------



## Kim Stebel (20. Jun 2008)

bt wird nur bis zum index 8 initialisiert, wenn du also auf irgendwas mit index 9 zugreifen willst bekommst du ne NullPointerException.


----------



## SlaterB (20. Jun 2008)

auf ein JPanel wirst du nicht setText() aufrufen können,
was sollte das bewirken?


----------



## Guest (20. Jun 2008)

bt wird nur bis zum index 8 initialisiert, wenn du also auf irgendwas mit index 9 zugreifen willst bekommst du ne NullPointerException.


ja, das ist mein problem :? 

ich hatte das vorher mit JButton, auf Panel hab ich nun gewechselt um später Bilder einführen zu können, wie die Mine z.b.


----------



## Ark (20. Jun 2008)

Du musst die beiden Schleifen laufen lassen, solange sie kleiner als 10 sind. Eleganter ist es, wenn du sie so lange laufen lässt, bis sie an die Arraygrenzen stoßen:

```
for (int i = 0; i < bt.length; i++) {
    for (int j = 0; j < bt[i].length; j++) {
```
So bleiben die Indizes immer im definierten Bereich.

Ark


----------



## SebiB90 (20. Jun 2008)

also ich sehe das Problem hier:

```
zufall1 = (int) (Math.random()*10); 
         zufall2 = (int) (Math.random()*10); 
         bt[zufall1][zufall2].setText("*");
```
mit *10 bekommst du zahlen von 0 bis 9. Deine Indizies gehen aber nur von 0 bis 8.
Also eins zu weit. also nur *9.
Außerdem ist es dann eine ArrayIndexOutOfBoundsException und keine NullPointerException


----------



## Gast (21. Jun 2008)

hey super, es hat geklappt!


----------

