-
Hallo,
ich habe ein kleines Problem mit Java...
Ich muss ein Programm schreiben das ein Feld mit vier zufälligen werten zwischen 0 und 9 generiert und auf dem Bildschirm ausgibt.
Mein Code sieht so aus...
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
import java.util.Random; class RandomArray1 { public static void main(String[]args) { getRandomArray(); print(); } public static int [] getRandomArray() { Random random = new Random(10); for ( i=0 ; i <4 ; i++ ){ int zufall = random.nextInt(10); return getRandomArray;} } public static void print(int[]array){ int[] neu = new int[array]; for(i = 0; i < blubb; i++){ neu [i] = i+1;} } System.out.print(neu); }
Als Fehlermeldung wird immer
H:\Programmieren\Übung>javac RandomArray1.java
RandomArray1.java:33: <identifier> expected
System.out.print(neu);
^
RandomArray1.java:33: <identifier> expected
System.out.print(neu);
^
2 errors
ausgegeben...
Wer kann mir bei meinem Problem helfen?
MfG ProxxicGeändert von Oliver Gierke (15.10.08 um 09:29 Uhr) Grund: Code tags spendiert
-
15.10.08 09:19 #2
Hallo,
bitte DRINGEND die Code-Tags (Button '#') benutzen - so ist das Ganze so ziemlich unleserlich ist
Aber wenn ich das richtig sehe, ist die VAR 'neu' innerhalb der Funktion 'print' deklariert und kann somit außerhalb beim Aufruf von 'System.out.print' nicht bekannt sein .....
Gruß
KlausEs ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!
Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
-------------------------------------------------------------------------------------------------
Ich beantworte keine Fragen per PN !!
Stellt Eure Fragen im Forum - dann haben alle etwas davon !!
-
Hallo Klaus,
also du meinst das ich die VAR neu im main deklarieren soll?
Das mit den Buttons hab ich nicht gewusst sorry
Hab mich erst vorner halben Stunde angemeldet xD...
MfG
Proxxic
-
15.10.08 09:33 #4
Hallo proXXic,
genau - das besagt ja auch Deine Fehlermeldung, dass 'neu' an der Stelle nicht bekannt!
Zudem ist "System.out.print()" eine SYSTEM-Funktion und nicht etwa die von Dir deklarierte Funktion "print"!
Ich vermute mal, dass Du vor hattest, den Inhalt von 'neu', der in "print" gefüllt wurde auszugeben, ja? Dann musst Du mit Deiner Funktion "print" auch den zurückgeben und ein VAR zuweisen, die dann mit "System.out.print()" ausgegeben werden kann!
Gruß
Klaus
EDIT: Jau, jetzt sieht das oben schön aus -Danke ....
EDIT-2: was ist denn "blubb"? Ist auch nicht definiert!
EDIT-3: zudem rufst Du in "main" Deine Funktion 'print' OHNE Parameter auf!Geändert von vfl_freak (15.10.08 um 09:47 Uhr)
Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!
Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
-------------------------------------------------------------------------------------------------
Ich beantworte keine Fragen per PN !!
Stellt Eure Fragen im Forum - dann haben alle etwas davon !!
-
blubb ist eigentlich neu
hab ich vergessen zu ändern... sry xD
Das Problem ist das ich aus "public static void print" nix zurückgeben kann... da es ja void ist!
Und zu edit 3: Ich weiß einfach nicht was da das zugehörige Übergabeparameter ist...
ich schätze mal das es print(int[]array) sein muss...
MfG
proXXicGeändert von proXXic (15.10.08 um 10:18 Uhr)
-
15.10.08 10:38 #6
Sowas sollte funktionieren - ist allerdings ungetestet :
java Code:
[LEFT]- import java.util.Random;
- class RandomArray1
- {
- public static void main(String[]args)
- {
- getRandomArray();
- int[] Zahlen = new int[]array;
- print( Zahlen );
- }
- public static int[] getRandomArray()
- {
- Random random = new Random(10);
- for ( i=0 ; i <4 ; i++ )
- {
- int zufall = random.nextInt(10);
- return getRandomArray;
- }
- }
- public static static int[] print(int[]array zahlen)
- {
- int blubb = 100;
- for(i = 0; i < blubb; i++)
- {
- zahlen[i] = i+1;
- System.out.print("Zahl<" + i + "> = <" + zahlen[i] + ">");
- }
- }
- }
[/LEFT]
Gruß
KlausGeändert von vfl_freak (15.10.08 um 10:39 Uhr) Grund: oops - da hat wohl was mit dem Java-Codetag nicht geklappt - sorry!
Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!
Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
-------------------------------------------------------------------------------------------------
Ich beantworte keine Fragen per PN !!
Stellt Eure Fragen im Forum - dann haben alle etwas davon !!
-
15.10.08 10:42 #7
neuer Versuch

GrußCode :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
import java.util.Random; class RandomArray1 { public static void main(String[]args) { int[] Zahlen = new int[]array; Zahlen = getRandomArray(); print( Zahlen ); } public static int[] getRandomArray() { Random random = new Random(10); for( i=0 ; i <4 ; i++ ) { int zufall = random.nextInt(10); return getRandomArray; } } public static void print(int[]array zahlen) { int blubb = 100; for(i = 0; i < blubb; i++) { zahlen[i] = i+1; System.out.print("Zahl<" + i + "> = <" + zahlen[i] + ">"); } } }
KlausGeändert von vfl_freak (15.10.08 um 10:44 Uhr) Grund: So, nun aber :D
Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!
Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
-------------------------------------------------------------------------------------------------
Ich beantworte keine Fragen per PN !!
Stellt Eure Fragen im Forum - dann haben alle etwas davon !!
-
Eine Methode getRandomArray() ist eventuell dazu gedacht, ein Array mit Zufallszahlen zurückzugeben und nicht um sich rekusiv selbst aufzurufen, wie Du es tust, Klaus:
Code :1
return getRandomArray;
Davon abgesehen, dass diese Zeile eh einen Compilerfehler erzeugt.
Und warum lässt Du ein Array, das nur 4 Stellen haben soll mit
Code :1 2 3 4 5 6
int blubb = 100; for(i = 0; i < blubb; i++) { zahlen[i] = i+1; System.out.print("Zahl<" + i + "> = <" + zahlen[i] + ">"); }
100 Mal durchlaufen
-
Also bei mir schaut das ganze jetzt so aus...
Es werden aber immer noch Fehler angezeigt...
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
import java.util.Random; class RandomArray1 { public static void main(String[]args) { getRandomArray(); print(int[]array); } public static int [] getRandomArray() { Random random = new Random(10); for ( i=0 ; i <4 ; i++ ){ int zufall = random.nextInt(10); return getRandomArray;} int[] neu = new int[array]; for(i = 0; i < neu; i++){ neu [i] = i+1;} return } public static void print(int[]array){ System.out.print(neu); } }
das untere return nicht beachten das ist falsch...
-
Das ist keine gültige Deklaration für ein Array. In den eckigen Klammern muss die Länge des Arrays stehen.Code :
1
int[] neu = new int[array];
Das ist einfach nur syntaktischer Nonsense. Was sollen diese Zeilen bewirken?Code :1 2 3
for ( i=0 ; i <4 ; i++ ){ int zufall = random.nextInt(10); return getRandomArray;}
Hier würde ich mal überlegen, was in das Array geschrieben wird. Im ersten Durchlauf wird z.B. folgendes geschehen:Code :1
neu [i] = i+1;
neu[0] = 1;
Ist das die Zuweisung, die Du machen möchtest? Oder sollten da nicht Zufallszahlen rein?
Desweiteren darf es in einer Methode nur ein return-Statement geben. Bei Dir sehe ich zwei. Und beim zweiten sagst Du dem armen Compiler noch nicht mal, was er Dir den zurückgeben soll.
-
Du wilst die Werte aber schon einspeichern oder?
Diese Methode erzeugt 4 Zufallszahlen, speichert sie nicht und gibt ein unbekanntes Objekt zurück...Code :1 2 3 4 5 6
public static int [] getRandomArray() { Random random = new Random(10); for ( i=0 ; i <4 ; i++ ){ int zufall = random.nextInt(10); return getRandomArray; }
Code :1 2 3 4 5 6 7 8
public static int [] getRandomArray() { int[] randomArray = new int[4]; // Hier werden die zahlen gespeichert Random random = new Random(10); for ( i=0 ; i <4 ; i++ ){ randomArray[i] =random.nextInt(10); } return getRandomArray; }
So wie dus vorher hattest, nämlich dass du den return Befehl schon in der forschleife hattest (Vielleicht Codebeispiel falsch zusammengeschnitten?) kann nicht funktionieren. Du würdest beim ersten Schleifendurchlauf die Methode verlassen. Da der Compiler gerRandomArray aber nicht kennt (wolltest du damit eine rekursive Funktion ausführen? dann hätte es heißen müssen getRandomArray<b>()</b>)
Ich habe das jetzt aus der forschlöeife rausgenommen. Damit macht der zweite Teil der funktion aber keinen Sinn mehr. Nach dem ersten return wird deine Funktion sofort verlassen!
Grüße,
Orbit
Eigentlich kein Problem. Man kann erstens schreiben return; aber dann müsste die Funktion void sein. Dann wird die Funtkion einfach beendet. Und es kann durchaus mehrere returns geben. Zum Beispiel mit bedingten Anweisungen (if(i==) return 5; else return 3);Desweiteren darf es in einer Methode nur ein return-Statement geben. Bei Dir sehe ich zwei. Und beim zweiten sagst Du dem armen Compiler noch nicht mal, was er Dir den zurückgeben soll.Geändert von Orbit (15.10.08 um 13:16 Uhr)
-
Eh nein.
Code :1 2 3 4 5 6 7 8
public static int [] getRandomArray() { int[] randomArray = new int[4]; // Hier werden die zahlen gespeichert Random random = new Random(10); for ( i=0 ; i <4 ; i++ ){ randomArray[i] =random.nextInt(10); } [B]return getRandomArray;[/B] }
Ist es wirklich so schwer, ein richtiges return-Statement zu schreiben?
-
-
15.10.08 13:28 #14
@epic_fail:
Hi, Du hast natürlich Recht mit dem, was Du weiter oben geschrieben - nur: ist das nicht mein Code gewesen! Den hatte ich mehr oder weniger unbesehen übernommen und ja auch nicht getestet, wie ich schrieb ...
Ok, hätte mir natürlich trozdem auffallen müssen
Gruß
KlausGeändert von vfl_freak (15.10.08 um 13:41 Uhr)
Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!
Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
-------------------------------------------------------------------------------------------------
Ich beantworte keine Fragen per PN !!
Stellt Eure Fragen im Forum - dann haben alle etwas davon !!
-
öh, und wieviele werden hier aufgerufen?
Schreib den Code mal in Assembler umpublic static int [] getRandomArray() {
Random random = new Random(10);
for ( i=0 ; i <4 ; i++ ){
int zufall = random.nextInt(10);
return getRandomArray;
}
int[] neu = new int[array];
for(i = 0; i < neu; i++){
neu [i] = i+1;}
return
}
Oder denk dir die forschleife als ein Konstrukt us whileschleifen welche aus einem Sprungbefehl und einer ifanweisung besteht.
Dann steht da nix anderes als if bla return blupp;
nicht dass das sinn machen würde
Aber bis auf den fehler dass beide male irgendwie nicht das geforderte zurückgegeben wird (einmal nichts und einmal, hmm, nix bekanntes) ist die Reihenfolge der returns richtig gesetzt (syntaktisch, nicht semantisch!).
EDIT:
natürlich meinte ich mit
eherCode :1 2 3 4 5 6 7 8
public static int [] getRandomArray() { int[] randomArray = new int[4]; // Hier werden die zahlen gespeichert Random random = new Random(10); for ( i=0 ; i <4 ; i++ ){ randomArray[i] =random.nextInt(10); } return getRandomArray; }
Code :1 2 3 4 5 6 7 8
public static int [] getRandomArray() { int[] randomArray = new int[4]; // Hier werden die zahlen gespeichert Random random = new Random(10); for ( i=0 ; i <4 ; i++ ){ randomArray[i] =random.nextInt(10); } return randomArray; }Geändert von Orbit (15.10.08 um 13:51 Uhr)
Ähnliche Themen
-
Zufallszahlen
Von Soul-ya im Forum C/C++Antworten: 27Letzter Beitrag: 15.03.10, 15:47 -
Zufallszahlen
Von kimi im Forum JavaAntworten: 6Letzter Beitrag: 01.01.10, 19:55 -
Probleme mit Zufallszahlen im Array?
Von jackie05 im Forum Delphi, Kylix, PascalAntworten: 15Letzter Beitrag: 28.01.09, 11:15 -
Zufallszahlen
Von WorldRacer im Forum C/C++Antworten: 2Letzter Beitrag: 13.06.08, 23:19 -
Zufallszahlen
Von phil_2003 im Forum C/C++Antworten: 7Letzter Beitrag: 24.02.07, 19:12



2Danke

Zitieren

Login





