tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
18
ZUGRIFFE
1397
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    proXXic proXXic ist offline Grünschnabel
    Registriert seit
    Oct 2008
    Beiträge
    4
    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 Proxxic
    Geändert von Oliver Gierke (15.10.08 um 09:29 Uhr) Grund: Code tags spendiert
     

  2. #2
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    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ß
    Klaus
     
    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 !!

  3. #3
    proXXic proXXic ist offline Grünschnabel
    Registriert seit
    Oct 2008
    Beiträge
    4
    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
     

  4. #4
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    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 !!

  5. #5
    proXXic proXXic ist offline Grünschnabel
    Registriert seit
    Oct 2008
    Beiträge
    4
    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
    proXXic
    Geändert von proXXic (15.10.08 um 10:18 Uhr)
     

  6. #6
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Sowas sollte funktionieren - ist allerdings ungetestet :

    java Code:
    [LEFT]
    1. import java.util.Random;
    2. class RandomArray1
    3. {
    4. public static void main(String[]args)
    5. {
    6. getRandomArray();
    7. int[] Zahlen = new int[]array;
    8. print( Zahlen );
    9. }
    10. public static int[] getRandomArray()
    11. {
    12. Random random = new Random(10);
    13. for ( i=0 ; i <4 ; i++ )
    14. {
    15. int zufall = random.nextInt(10);
    16. return getRandomArray;
    17. }
    18. }
    19. public static static int[] print(int[]array zahlen)
    20. {
    21. int blubb = 100;
    22. for(i = 0; i < blubb; i++)
    23. {
    24. zahlen[i] = i+1;
    25. System.out.print("Zahl<" + i + "> = <" + zahlen[i] + ">");
    26. }
    27. }
    28. }

    [/LEFT]


    Gruß
    Klaus
    Geä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 !!

  7. #7
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    neuer Versuch

    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] + ">");
            }
        }
    }
    Gruß
    Klaus
    Geändert von vfl_freak (15.10.08 um 10:44 Uhr) Grund: So, nun aber :D
    epic fail bedankt sich. 
    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 !!

  8. #8
    epic fail epic fail ist offline Rookie
    Registriert seit
    Oct 2008
    Beiträge
    6
    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
     

  9. #9
    proXXic proXXic ist offline Grünschnabel
    Registriert seit
    Oct 2008
    Beiträge
    4
    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...
     

  10. #10
    epic fail epic fail ist offline Rookie
    Registriert seit
    Oct 2008
    Beiträge
    6
    Code :
    1
    
    int[] neu = new int[array];
    Das ist keine gültige Deklaration für ein Array. In den eckigen Klammern muss die Länge des Arrays stehen.


    Code :
    1
    2
    3
    
        for ( i=0 ; i <4 ; i++ ){
        int zufall = random.nextInt(10);
        return getRandomArray;}
    Das ist einfach nur syntaktischer Nonsense. Was sollen diese Zeilen bewirken?

    Code :
    1
    
    neu [i] = i+1;
    Hier würde ich mal überlegen, was in das Array geschrieben wird. Im ersten Durchlauf wird z.B. folgendes geschehen:
    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.
     

  11. #11
    Avatar von Orbit
    Orbit Orbit ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Beiträge
    175
    Du wilst die Werte aber schon einspeichern oder?

    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;
    }
    Diese Methode erzeugt 4 Zufallszahlen, speichert sie nicht und gibt ein unbekanntes Objekt zurück...
    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

    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.
    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);
    Geändert von Orbit (15.10.08 um 13:16 Uhr)
     

  12. #12
    epic fail epic fail ist offline Rookie
    Registriert seit
    Oct 2008
    Beiträge
    6
    Zitat Zitat von Orbit Beitrag anzeigen
    Du wilst die Werte aber schon einspeichern oder?

    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;
    }
    Diese Methode erzeugt 4 Zufallszahlen, speichert sie nicht und gibt ein unbekanntes Objekt zurück...
    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?
     

  13. #13
    epic fail epic fail ist offline Rookie
    Registriert seit
    Oct 2008
    Beiträge
    6
    Zitat Zitat von Orbit Beitrag anzeigen
    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);
    Ok, die Preisfrage lautet: Wieviele returns werden aufgerufen?
    Eins, genau. Darum ging es mir. Ob man jetzt nur eins hinschreibt, oder per if-Abfragen genau eins ausführen lässt, ist egal.
     

  14. #14
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    @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ß
    Klaus
    Geä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 !!

  15. #15
    Avatar von Orbit
    Orbit Orbit ist offline Mitglied Gold
    Registriert seit
    Aug 2007
    Beiträge
    175
    öh, und wieviele werden hier aufgerufen?
    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

    }
    Schreib den Code mal in Assembler um
    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
    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;
    }
    eher
    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

  1. Zufallszahlen
    Von Soul-ya im Forum C/C++
    Antworten: 27
    Letzter Beitrag: 15.03.10, 15:47
  2. Zufallszahlen
    Von kimi im Forum Java
    Antworten: 6
    Letzter Beitrag: 01.01.10, 19:55
  3. Probleme mit Zufallszahlen im Array?
    Von jackie05 im Forum Delphi, Kylix, Pascal
    Antworten: 15
    Letzter Beitrag: 28.01.09, 11:15
  4. Zufallszahlen
    Von WorldRacer im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 13.06.08, 23:19
  5. Zufallszahlen
    Von phil_2003 im Forum C/C++
    Antworten: 7
    Letzter Beitrag: 24.02.07, 19:12