# Zufallszahl mit Wertebereich und !=0



## WenzelPaul (20. Juni 2007)

Es soll eine zum Beispiel eine 4-stellige Zahl erzeugt werden wo keine 0 vorkommen darf.
Es gibt ja java.util.random aber das hilft mir nicht wirklich weiter.
Eine Idee jemand?


----------



## bernhard2211 (20. Juni 2007)

In etwa sowas :
(nextInt (8)+1)*1000 +
(nextInt (8)+1)*100 +
(nextInt (8)+1)*10 +
(nextInt (8)+1)
aus java.util.random sollte das liefern.

grüsse


----------



## MeinerEiner_80 (20. Juni 2007)

Moin!
Eine andere Möglichkeit:
Um zu testen, ob eine Zahl keine Null enthält, kannst du folgendes machen:

```
if(String.valueOf(integer).indexOf("0") ==-1){

}
```


*grüssle*
MeinerEiner


----------



## WenzelPaul (20. Juni 2007)

```
if(String.valueOf(zufallszahl).indexOf("0") ==-1)
```

was passiert denn da? 
wie erreiche ich das der wertebereich nur positive 4-stellige zahlen ausgibt? also von +1111 bis +9999 ?

habe schon


----------



## Proko (20. Juni 2007)

WenzelPaul hat gesagt.:


> was passiert denn da?
> wie erreiche ich das der wertebereich nur positive 4-stellige zahlen ausgibt? also von +1111 bis +9999 ?



versuchs mal mit dem code von bernhard, der sieht ja vielversprechend aus und liefert nur werte zwischen 1111-9999 ohne 0er


was meinereiner hier verwendet ist: er überprüft ob in der zahl, eine 0 steht (indem er sie in einen string umwandelt und dann eine standard methode verwendet), wenn ja musst du eine neue zahl erzeugen, wenn nein kannst du die zahl verwenden


z.bsp.


```
zufallszahl = 0;
while (String.valueOf(zufallszahl).indexOf("0") != -1) {
  zufallszahl = nextInt(9999);
}
```


----------



## MeinerEiner_80 (20. Juni 2007)

Der integer Wert wird in einen String umgewandelt, und es wird der Index des Zeichens 0 ermittelt. Falls dieser -1 ist, ist keine 0 enthalten.

Das ist wie gesagt nur eine Überprüfung.. Erstellen musst du die Zahl schon selbst und kannst dann halt überprüfen

Aber wenns dir nur um 4 stellige postive Zahlen geht, dann solltest du es eher wie bernhard2211 machen..

*grüssle*

MeinerEiner


----------



## WenzelPaul (20. Juni 2007)

okay danke habs nun so gelöst


```
public void legeZufallszahl()
  {
	  Random r = new Random();
	  zufallszahl1 = (r.nextInt(8)+1) ;
	  zufallszahl2 = (r.nextInt(8)+1);
	  zufallszahl3 = (r.nextInt(8)+1);
	  zufallszahl4 = (r.nextInt(8)+1);
```


----------



## Proko (20. Juni 2007)

die andere lösung mit dem erzeugen so lange bis die überprüfung stimmt (keine 0 drinen), könnte angewendet werden, wenn deine zahlen größer werden würden

z.b. 10 ziffern, da das zusammenhängen und erzeugen doch viel händische arbeit sind

musst du überlegen, ob auch mal schnell 5 oder mehr ziffern verlangt werden können, oder ob das nicht der fall ist


----------



## WenzelPaul (20. Juni 2007)

jetzt mal ne andere frage ...

Ich habe eine 4-stellige positive zufallszahl erstellt.
Jetzt will ich eine weitere 4-stellige positive zufallszahl erzeugen und die mit meiner ersten vergleichen. 
Es soll solange eine 4-stellige positive zufallszahl erzeugt werden, bis ich meine erste 4-stellige positive zufallszahl erraten habe.


----------



## Thomas Darimont (20. Juni 2007)

Hallo,

wieso nicht einfach:

```
Random randomizer = new Random();
int number = randomizer.nextInt(9999)+1;
```

Gruß Tom


----------



## Proko (20. Juni 2007)

wo liegt das problem?

du weißt wie man eine zufällige zahl erstellt (speicherst als int first ab)

dann machst eine schleife, in der du solange eine neue zahl second erzeugst bis sie gleich sind


----------



## Proko (20. Juni 2007)

Thomas Darimont hat gesagt.:


> Hallo,
> 
> wieso nicht einfach:
> 
> ...



weile keine 0 vorkommen soll, auch nicht 1011 wie ich das verstanden habe


soll jede zahl zwischen 1-9999 vorkommen können (Also auch 1000) dann nimm den code von thomas
ansonsten hast ja schon zwei implementierungen wo zahlen erzeugt werden, die keine 0 beinhalten


----------



## WenzelPaul (20. Juni 2007)

Proko hat gesagt.:


> wo liegt das problem?
> 
> dann machst eine schleife, in der du solange eine neue zahl second erzeugst bis sie gleich sind



... weil ich leider nicht weiß wie ich immer eine neue zahl erzeuge und das ganze in eine schleife einbaue!


----------



## MeinerEiner_80 (20. Juni 2007)

WenzelPaul hat gesagt.:


> ... weil ich leider nicht weiß wie ich immer eine neue zahl erzeuge und das ganze in eine schleife einbaue!



Dann solltest du dich meiner Meinung nach vielleicht ein bisschen mehr mit den Java Grundlagen beschäftigen. Das ist nämlich wirklich ne low-low-Level Frage.
Schau dazu mal hier:
http://www.galileocomputing.de/open...02_006.htm#mj0ccd2acc1dc0c8b3841ed48a990ea232

Vielleicht als kleiner Tip: Eine while Schleife wäre für dein Problem ganz angebracht..

*grüssle*
MeinerEiner


----------

