Hallo ihr!
Ich habe ein PRoblem mit folgendem Code:
Code:
public class Wuerfelspiel{
public static int wuerfeln(int anzahl) {
double zufallszahl;
int maxZahl=6;
int n[] = new int[anzahl-1];
for(int i=0; i < anzahl; i++){
n[i] = ((int)(Math.random() * maxZahl) + 1);
}
return n;
}
public static void main (String args[]) {
int anzahl = 100;
Wuerfel wf = new Wuerfel();
int Wuerfel = wf.wuerfeln();
System.out.println(n);
}
}
Nun sagt er, dass der return type falsch ist (ich speicher doch die Zufallszahl in ein Array jeweils an die stelle . Dann müsste ich das doch einfach so ausgeben können. Ja, da komme ich leider nicht weiter. Wie müsste ich das dann in der Main machen, damit er mir die werte ausgibt??
Grüße und danke,
Kruemel
public class Wuerfelspiel
{
public static int wuerfeln(int anzahl)
{
//...
}
return n;
}
Zudem willst du ein Array zurückgeben, der Rückgabewert ist aber int.
Richtig müsste es so aussehen:
Code:
public class Wuerfelspiel
´{
public static int[] wuerfeln(int anzahl) //<-- DA fehlten 2 eckige Klammern für das Array
{
double zufallszahl;
int maxZahl=6;
int n[] = new int[anzahl-1];
for(int i=0; i < anzahl; i++){
n[i] = ((int)(Math.random() * maxZahl) + 1);
return n; //<-- Und DAS muss ans Ende der Methode nicht dahinter.
}
}
Hallo!
Vielen Dank schonmal für die Hilfe! Ich glaube aber, dass return n; steht in der Methode
Denn ich habe die FOR Bedingung auch in eckigen klammern und dann kommt es glaube ich hin.
Wie greife ich den in der public stativ void main darauf zu um das auszugeben? Denn er meldet jetzt fehler, dass er das in der Main nicht deklariert hat...
Danke schonmal
Kruemel
Sry, hab die geschweifte Klammer hinter der for-Schleife übersehen (das sieht so aus, als ob die Methode da zu ende wäre und die For-Schleife gar keine geschweiften Klammern hat :autsch: ).
Damit du das Arrayausgeben kannst, musst du es element für element in einer for-schleife "abklappern":
Danke, ist echt nett, dass ihr mir hier so helft!
Alos mein Code sieht folgendermaßen aus
Code:
public class Wuerfelspiel{
public static int[] wuerfeln(int anzahl) {
double zufallszahl;
int maxZahl=6;
int n[] = new int[anzahl-1];
for(int i=0; i < anzahl; i++){
n[i] = ((int)(Math.random() * maxZahl) + 1);
}
return n;
}
public static void main (String args[]) {
int anzahl = 100;
Wuerfelspiel wf = new Wuerfelspiel();
int Wuerfelspiel = wf.wuerfeln();
for(int i=0; i<n.length; i++)
{
System.out.println(n[i]);
}
}
}
[\code]
Jetzt meldet er noch drei fehler:
wuerfeln(int) in Wuerfelspiel cannot be applied to ()
und zweimal cannot find Symbol
symbol: variable n
Und das in Zeile 17 und 19...
Kann da nochmal jemand helfen?
ausserdem musst du noch das static von der wuerfeln methode wegnehmen, da es keine klassenmethode sondern eine objektmethode ist -> mehr dazu in der faq
und das mit dem n löst sich dann von alleine wenn du den rest der fehler beseitigt hast
Vielen vielen Dank, langsam hab ichs fast ganz!
Mein Code sieht jetzt so aus:
Code:
public class Wuerfelspiel{
public int[] wuerfeln(int anzahl) {
int maxZahl=6;
int n[] = new int[anzahl-1];
for(int i=0; i < anzahl-1; i++){
n[i] = ((int)(Math.random() * maxZahl) + 1);
}
return n;
}
public static void main (String args[]) {
int anzahl = 100;
Wuerfelspiel wf = new Wuerfelspiel();
int[] Wuerfelspiel = wf.wuerfeln(anzahl);
for(int i=0; i<Wuerfelspiel.length; i++)
{
System.out.print(Wuerfelspiel);
}
}
}
Jetzt ist nur ein Problem: Er gibt keine Zufalls zahlen zwischen 1 und 6 aus, sondern immer lustige Ziffernkombinationen...
sehr merkwürdig...woran kann das liegen??
int[] wuerfelspiel = wf.wuerfeln(anzahl); //<-- Wundert mich, dass das funzt, man sollte nicht die Variable wie die Klasse benennen, Variablennamen werden normaleweise am Anfang klein geschrieben.
for(int i=0; i<wuerfelspiel.length; i++)
{
System.out.print(wuerfelspiel[i]); //<--Du willst ja das i-te Arrayelemnt ausgeben
}