Histogramm

v Ralle v

Aktives Mitglied
Hallo, ich studiere seit diesem Jahr Informatik und bin daher noch ein Anfänger in Java. Ich hatte zwar schon einige Grundkenntnisse durch Delphi, doch jetzt bin ich an meine erste Hürde gestoßen, wo ich wirklich nicht weiter komme:

Schreiben Sie eine Methode, die die (als Parameter ¨ubergebene) Reihung vom Typ byte mit Zufallszahlen
füllt! Erzeugen Sie die Werte mit
[Java]Random rnd = new Random();
byte value = (byte) rnd.nextInt(5) + rnd.nextInt(5)
+ rnd.nextInt(5) + rnd.nextInt(5);[/Java]

Nun mein Problem: Ich versteh nicht ganz, was dieser Code bedeutet und was er macht. Wie fülle ich damit ein Array? Und nur kurz zum Verständnis: mit Methode ist ein extra Prozedur oder Funktion gemeint?! Ich hab auch den Code bereits in Java eingefügt, aber mir wird Random als Fehler markiert, dass es nicht zu einem Typ zerlegt werden kann. Schreibe ich es um:

[Java]java.util.Random rnd = new java.util.Random();
byte value = (byte) rnd.nextInt(5) + rnd.nextInt(5)
+ rnd.nextInt(5) + rnd.nextInt(5);[/Java]

... wird mir rnd.nextInt(5) als Fehler markiert. Es kann nicht zu byte umgewandelt werden (obwohl die Typumwandlung davor steht?!).

Wie kann ich nun das Array füllen? Außerdem bin ich mir auch nicht ganz sicher, wie ich Arrays in eine Prozedur oder Funktion korrekt übergebe. Ich füge mal den Quelltext noch hinzu, was ich bisher habe, ich muss allerdings dazu sagen, dass das Projekt noch ganz am Anfang steht:

[Java]public class Histogramme {

static void fillArray(Array []a){

java.util.Random rnd = new java.util.Random();
byte value = (byte) rnd.nextInt(5) + rnd.nextInt(5)
+ rnd.nextInt(5) + rnd.nextInt(5);

}

public static void main(String[] args) {

byte a[]; int n;

n=-1;
while (n<1 | n>127){
Out.println("Bitte geben sie eine Zahl zwischen [1..127] ein.");
n=In.readInt();
}
a=new byte[n];
//hier soll dann die Prozedur aufgerufen werden und a soll übergeben werden
}

}
[/code]

Ich bedanke mich für jede Antwort schon mal im Voraus!

MfG Ralle
 

noobadix

Bekanntes Mitglied
Wenn du ein array mit mehreren Zufallszahlen brauchst, nimm Variante A.
Wenn du als 'byte value' die Summe mehrer 'nextInt(x)' benötigst (also doch nicht als array) wähle Variante B:

Java:
import java.util.Random;

...

Random rnd = new Random();
//Variante A:
byte[] array = {(byte)rnd.nextInt(3),(byte)rnd.nextInt(3)};
//Variante B:
byte value = (byte) ( rnd.nextInt(3) + rnd.nextInt(3) );
...
 
Zuletzt bearbeitet:

v Ralle v

Aktives Mitglied
So nach einigen Probieren und Nachdenken konnte ich den Knoten lösen :) Vielen Dank für den Tipp!
[Java]import java.util.Random;

public class Histogramme {

static void fillArray(byte[]a){
Random rnd=new Random();

for (byte i=0;i<a.length;i++){
byte value=(byte)(rnd.nextInt(5)+rnd.nextInt(5)+rnd.nextInt(5)+rnd.nextInt(5));
a=value;
}
}

public static void main(String[] args) {

byte a[]; int n;

n=-1;
while (n<1 | n>127){
Out.println("Bitte geben sie eine Zahl zwischen [1..127] ein.");
n=In.readInt();
}
a=new byte[n];
fillArray(a);
for (int i=0;i<a.length;i++)
Out.print(a+" ");
}

}[/Java]
 

Oben