Int-Felder erzeugen

neerual

Mitglied
Hallöchen, ich habe neulich schonmal eine Frage hier gestellt und mir wurde super geholfen, deshalb bin ich nun wieder da! 😛

Ich soll ein int-Feld der Länge n erstellen, dies mit Zufallszahlen aus dem Bereich 1,...,n füllen und mir dann das Feld ausgeben lassen.

Ich habe dazu soweit folgendes:
Code:
        int[] a;
        a = new int[n];
        for (int i = 0; i < n, i++)
            a[i] = Math.random();
        System.out.println(a)

(Das ist an sich nur der Rumpf meines Codes, wenn ihr den Rest auch sehen wollt, einfach fix schreiben.)
So, meine Frage ist nun:
ich denke das ich dort oben folgendes tue:
ich gebe einem int-Feld den Namen a, dann sage ich, dass es die Länge n haben soll mit a = new int[n] und weise ihm dann mit dem Rest zu, dass es mit einer Zahl zwischen 1 und n gefüllt werden soll.
Aber tue ich dies überhaupt?

Ich wüsste auch nicht, wie ich das schnell compilen köönte ums zu testen 🙁

Vielen Dank für eure Hilfe!
 
Code:
public class IntArrayTesten {

   public static void main(String[] args) {
     int n= 10;
        int[] a;
        a = new int[n];
        for (int i = 0; i < n; i++)
            a[i] = Math.random();
        System.out.println(a);
   }
}

und wenn du das compilieren willst wirst du noch ein kleines Problem feststellen ...
 
Zuletzt bearbeitet:
Code:
public class IntArrayTesten {

   public static void main(String[] args) {
     int n= 10;
        int[] a;
        a = new int[n];
        for (int i = 0; i < n, i++)
            a[i] = Math.random();
        System.out.println(a);
   }
}

und wenn du das compilieren willst wirst du noch ein kleines Problem feststellen ...
Danke euch beiden schon mal für die Blitz-Antwort 🙂

Wenn ich das ganze so compile, dann sagt er mir, 'can't find symbol i' zu der "a = Math.random();" Zeile. Muss ich i also auch deklarieren, ja? Und wenn ja, dann als int i = 0?

Allerdings dachte ich, dass ich i schon in dem for abschnitt in Zeile 3 des original codes deklariert hätte?
 
Und in der Math.random()-Zeile fehlte erstens das Semikolon, zweitens ergibt das eine Zufallszahl zwischen 0.0 und 1.0 ! Nicht das was du willst, gelle
 
Du kannst es so lösen:

Code:
        Random rand = new Random();
       
        int n= 10;
        int[] a;
        a = new int[n];
        for (int i = 0; i < n; i++) {
            a[i] = rand.nextInt(100);
            System.out.println(a[i]);
       }
dein Array a musst du auch elementweise ausgeben sonst wird die Ausgabe ein wenig kryptisch aussehen
 
Du kannst es so lösen:

Code:
        Random rand = new Random();
      
        int n= 10;
        int[] a;
        a = new int[n];
        for (int i = 0; i < n; i++) {
            a[i] = rand.nextInt(100);
            System.out.println(a[i]);
       }
dein Array a musst du auch elementweise ausgeben sonst wird die Ausgabe ein wenig kryptisch aussehen
Danke, soweit - ich bin nochmal in meine Unterlagen getaucht:
könnte ich das ganze vielleicht auch so lösen:

Code:
class Uebung04Aufgabe1 {
    public static void main(String[] args) {
        int n = Integer.parseInt(args[0]);
            if (n < 0) {
                System.out.println("n ist zu klein!");
                System.exit(0);
            } //works!!
        int N = Integer.parseInt(args[0]);
        double r = Math.random();
        int n = (int) (r * N);
        System.out.println(n);   
        //Ein int-Feld der Länge n wird erzeugt und mit Zufallszahlen aus dem Bereich 1,...,n             //gefüllt. Das Feld wird ausgegeben.
}
}

Das ist jetzt mein gesamter Code 😀 Ist natürlich alles unfertig, also da kommt noch einiges an Aufgabe dazu leider ;(
 
Danke, soweit - ich bin nochmal in meine Unterlagen getaucht:
könnte ich das ganze vielleicht auch so lösen:

Code:
class Uebung04Aufgabe1 {
    public static void main(String[] args) {
        int n = Integer.parseInt(args[0]);
            if (n < 0) {
                System.out.println("n ist zu klein!");
                System.exit(0);
            } //works!!
        int N = Integer.parseInt(args[0]);
        double r = Math.random();
        int n = (int) (r * N);
        System.out.println(n);  
        //Ein int-Feld der Länge n wird erzeugt und mit Zufallszahlen aus dem Bereich 1,...,n             //gefüllt. Das Feld wird ausgegeben.
}
}

Das ist jetzt mein gesamter Code 😀 Ist natürlich alles unfertig, also da kommt noch einiges an Aufgabe dazu leider ;(

Ich hab das letzte n zu m umbenannt und dann scheint es für mich zu funktionieren 🙂
 
Wenn ich die Aufgabe richtig verstanden haben ist dies das was du haben möchtest...
Du hättest dir den ein oder anderen Schritt sparen können wenn du z.B. den double Wert aus Math.random direkt gecastet hättest.

Noch ein kleiner Tipp du könntest die Abfrage für die Länge des Arrays in eine while Schleife packen so dass das Programm erst weitergeht wenn ein gültiger Wert eingegeben wurde.

Schau dir am besten den folgenden Code einfach mal an und versuche ihn zu verstehen🙂

Java:
int arrayLength = 4;   //4 ist nur ein Beispiel es könnte auch eine andere Zahl sein
int [] a = new int[arrayLength];

for (int i = 0; i  < arrayLength; i++){
    a[i] = (int)(Math.random * arrayLength) + 1;
    System.out.println(a[i]);
}

Gruß Java4win
 
Eine kleine Anmerkung dazu:

Java:
class Uebung04Aufgabe1 {
    public static void main(String[] args) {
        int n = Integer.parseInt(args[0]); //dieses...
            if (n < 0) {
                System.out.println("n ist zu klein!");
                System.exit(0);
            } //works!!
        int N = Integer.parseInt(args[0]); // ... und dieses sind identisch. Verwende doch gleich das "n" von oben
        double r = Math.random();
        int n = (int) (r * N); // würdest du das "n" nicht neu deklarieren ("int"), dann würde es auch so gehen...
        System.out.println(n); 
        //Ein int-Feld der Länge n wird erzeugt und mit Zufallszahlen aus dem Bereich 1,...,n             //gefüllt. Das Feld wird ausgegeben.
}
}
 
Die Anmerkung bzgl. Neudeklaration von int n verstehe ich nicht denn diese Neudeklaration ist schlicht und einfach falsch. Sagt aber auch der Compiler schon ...
 

Zurück
Oben