Array, Element in Array?

Nirvana

Aktives Mitglied
Ich habe ein Array mit 20 zufallszahlen erstellt nun ist meine AUfgabe:
Teste ob eine zufällig generierte Zahl im Array vorkommt. Wiederholde diesen Test so lange, bie er "wahr" ist und gib die Position dieser generierten Zahl aus.
r() ist von mir eine methode die eine zufallszahl ausgibt

Java:
 int[] zahlenreihe = new int[20];
        for (int i=0; i < zahlenreihe.length; i++){
            zahlenreihe[i]= r();
        }

Nun:
Java:
       boolean var = false;
       while(var==false){
           int Zufallszahl =r();
            for (int i = 0; i < 20; i++) {
                if (Zufallszahl == zahlenreihe[i]) {
                    var = true;
                    System.out.println("Array: Zahl " + Zufallszahl + " an der Position " + i);
                    break;
                }
                }
       }

Gibt mir zwar was aus, aber die werte ensprechen gar nicht, denne wen ich mir das array vorher ausgeben lasse.
 
Code:
while(var==false)
->
Code:
while(!var)
das tolle an booleans ist doch, dass sie nur true und false annehmen können 🙂.

Und was wird ausgegeben?
 
Wenn ich die Aufgabe richtig verstanden habe, ausversehen mit 10 nicht 20 zufallszahlen und nur im bereich von 0-100:

Java:
package zufasllszahlenarray;

import java.util.Random;

public class Zufasllszahlenarray {  

    private int[] arr = new int[10];
    private boolean gefunden = false;

    public Zufasllszahlenarray() {

        this.arr = new int[10];
        for (int i = 0; i < 10; i++) {
            arr[i] = zufallsZahl();
        }

        test(arr);
    }

    private int zufallsZahl() {
        Random rand = new Random();
        int alpha = rand.nextInt(100);
        return alpha;
    }

    private void test(int[] a) {
        while (!gefunden) {
            Random rand = new Random();
            int zahl = rand.nextInt(100);
            System.out.println("Zufallszahl: " + zahl);
            for (int i = 0; i < 10; i++) {
                if (a[i] == zahl) {
                    System.out.println("arr [" + i + "] = " + a[i]);
                    gefunden = true;
                    break;
                }
            }
        }
    }
    
    public static void main(String[] args) {
        new Zufasllszahlenarray();
    }
}
 
Hallo
Nun mit while(!var) statt while(var==false) funktioniert es.
Aber ich verstehe nicht warum es dann funktioniert.
!= bedeutet z.B das es nicht gleich ist , was bedeutet dann !var ?
 
Hallo
Nun mit while(!var) statt while(var==false) funktioniert es.
Aber ich verstehe nicht warum es dann funktioniert.
!= bedeutet z.B das es nicht gleich ist , was bedeutet dann !var ?

wie schon gesagt handelt es sich um ein boolean. booleans können 2 werte annehmen: wahr und falsch.

Code:
while(var)
bedeutet während var zutrifft, also den wert true hat.
Code:
!
steht in java für eine Verneinung also
Code:
while(!var)
bedeutet während var nicht zutrifft also den wert false hat.

grüße

||edit: richtig, das sollte den fehler eigentlich nicht beheben.
while(var==false) -> while(!var)
das tolle an booleans ist doch, dass sie nur true und false annehmen können .

Und was wird ausgegeben?

Damit meinte ich, dass es unnötig ist
Code:
(var==false)
zu schreiben. Ich finden
Code:
(!var)
schöner, aber richtig ist beides 😉
 
Zuletzt bearbeitet:
Code:
while(!var)
<=>
Code:
while(var != true)
<=>
Code:
while(var == false)
Das sind, sofern es sich bei var um ein boolean handelt, drei äquivalente Schreibweisen. Dass dein Programm davor nicht funktioniert hat, lag also bestimmt nicht daran. Zeig uns deinen vollständigen Quellcode samt Ausgabe und wir können den Fehler suchen.
 
Hat schon geklappt,
eine Frage noch:

Es soll ja die Position ausgeben. Das array zählt aber ab 0 .
SOll ich nun +1 rechnen bei der Position , oder macht man das nicht?
 

Neue Themen


Zurück
Oben