tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
10
ZUGRIFFE
724
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    tha_specializt tha_specializt ist offline Mitglied Silber
    Registriert seit
    Aug 2005
    Beiträge
    76
    Code java:
    1
    2
    3
    4
    5
    
     class formular extends Thread{
    private String[] ueberschriften;
            formular() {      
                this.ueberschriften = { "Name:", "Vorname:", "Straße:", "PLZ:", "Ort:", "Geburtsdatum:", "Familienstand:", "TelefonNr.:",  
                                      "HandyNr.:", "FaxNr.:", "HandyNr.:", "E-Mail:" };
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    classes
    D:\Programme\JAVA-PROJEKTE\0mGTeh1337Haxx0rProject\src\TCP\clientside.java:879: illegal start of expression
                this.ueberschriften = { "Name:", "Vorname:", "Straße:", "PLZ:", "Ort:", "Geburtsdatum:", "Familienstand:", "TelefonNr.:"
    D:\Programme\JAVA-PROJEKTE\0mGTeh1337Haxx0rProject\src\TCP\clientside.java:879: not a statement
                this.ueberschriften = { "Name:", "Vorname:", "Straße:", "PLZ:", "Ort:", "Geburtsdatum:", "Familienstand:", "TelefonNr.:"
    D:\Programme\JAVA-PROJEKTE\0mGTeh1337Haxx0rProject\src\TCP\clientside.java:879: ';' expected
                this.ueberschriften = { "Name:", "Vorname:", "Straße:", "PLZ:", "Ort:", "Geburtsdatum:", "Familienstand:", "TelefonNr.:"
    3 errors
    BUILD FAILED (total time: 0 seconds)

    Ähm ... seit wann kann man keine Arrays mehr direkt initialisieren?
    Bin ich blöd? ? Wo is der Fehler?
     

  2. #2
    MeinerEiner_80 Tutorials.de Gastzugang
    Moin!

    Also entweder:
    Code :
    1
    
    String[] tmp = {"a","b"};

    oder

    Code :
    1
    2
    
    String[] tmp = null;
    tmp = new String[]{"a","b"};

    *grüssle*
    MeinerEiner
     

  3. #3
    tha_specializt tha_specializt ist offline Mitglied Silber
    Registriert seit
    Aug 2005
    Beiträge
    76
    ich hab das array jetzt direkt bei der Erstellung mit Elementen gefüllt .... ich finds zwar äusserst seltsam, dass hier
    Code java:
    1
    
    String[] tmp; tmp = {"bla", "blub"};
    nicht funktioniert, aber ... Hey! Wayne!
     

  4. #4
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.885
    Blog-Einträge
    29
    Hallo,

    Der Java Kompilier gibt einen Fehler aus, wenn eine lokale Variable vor ihrer Verwendung nicht initialisiert wurde.
    Ein String local; ist nur eine Deklaration einer lokalen Variablen aber keine Initialisierung.
    Membervariablen werden bei der Deklaration automatisch mit ihren default Werten initialisiert.

    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
    
    /**
     * 
     */
    package de.tutorials;
     
    /**
     * @author Thomas.Darimont
     * 
     */
    public class LocalsInitializationExample {
     
        /**
         * @param args
         */
        public static void main(String[] args){
            String local; //Deklaration
            //if(args.length < 10){
                local = "bubu"; // Initialisierung
            //}
            System.out.println(local); //Verwendung
        }
     
    }

    Der Kompilier führt während der Kompilierung eine Datenflussanalyse durch um zu sehen ob eine lokale Variable vor ihrer ersten Verwendung initialisiert wird.
    Lässt man in diesem Beispiel die Kommentare weg, so erkennt der Kompilier, dass die lokale Variable local in dem Fall, dass args.length > 9 ist vor ihrer Verwendung möglicherweise nicht initialisiert ist und gibt eine entsprechende Fehlermeldung aus.

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  5. #5
    tha_specializt tha_specializt ist offline Mitglied Silber
    Registriert seit
    Aug 2005
    Beiträge
    76
    das is klar .... Aber ich will meine Variable im Konstruktor initialisieren (genauso wie du im Beispiel), eine vorzeitige Verwendung kommt hier garnicht in Frage ... warum geht das nicht?

    Warum muss ich in meinem Beispiel Deklaration und Initialisierung gleichzeitig vornehmen, damit alles kompiliert werden kann?
    Geändert von tha_specializt (28.08.07 um 13:50 Uhr)
     

  6. #6
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Hallo,

    warum machst du nicht einfach
    Code java:
    1
    2
    3
    
    String[] tmp = null; 
     
    tmp = {"bla", "blub"};

    MFG

    zEriX
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  7. #7
    tha_specializt tha_specializt ist offline Mitglied Silber
    Registriert seit
    Aug 2005
    Beiträge
    76
    hab ich versucht ... geht nicht (selbe Fehlermeldung)
     

  8. #8
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.885
    Blog-Einträge
    29
    Hallo,

    diese Kurzform der nachträglichen Array-Initialisierung geht nur mit lokalen Variablen und dann unter den genannten Einschränkungen. "Direkt" kann man diese Kurzform der Array Initialisierung überall verwenden.

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    /**
     * 
     */
    package de.tutorials;
     
    /**
     * @author Thomas.Darimont
     * 
     */
    public class LocalsInitializationExample {
        String[] works = {"a","b"};
        String[] worksAlso;
        String[] doesNotWork;
        
        public LocalsInitializationExample(){
            worksAlso = new String[]{"gugu"};
            String[] antoherWorkingExample = {"gaga"};
            doesNotWork = {"bubu"};
        }
    }

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  9. #9
    tha_specializt tha_specializt ist offline Mitglied Silber
    Registriert seit
    Aug 2005
    Beiträge
    76
    ah, danke ....
     

  10. #10
    Avatar von takidoso
    takidoso takidoso ist offline Mitglied Brillant
    Registriert seit
    Aug 2004
    Ort
    Kömigstein
    Beiträge
    911
    Hast du schon ausprobiert ob folgendes geht?

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    class formular extends Thread
    {
    private String[] ueberschriften;        
    formular() 
    {                  
       this.ueberschriften = [B]new String[][/B] { 
                                                                   "Name:", 
                                                                   "Vorname:", 
                                                                   "Straße:", 
                                                                   "PLZ:", 
                                                                   "Ort:", 
                                                                   "Geburtsdatum:", 
                                                                   "Familienstand:",
                                                                   "TelefonNr.:",
                                                                   "HandyNr.:", 
                                                                   "FaxNr.:", 
                                                                   "HandyNr.:", 
                                                                   "E-Mail:" 
                                                                 }; 
    ...

    ich gebe zu es nicht ausprobiert zu haben, aber vielleicht geht das ja.
     

  11. #11
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Zitat Zitat von Thomas Darimont Beitrag anzeigen
    Hallo,

    diese Kurzform der nachträglichen Array-Initialisierung geht nur mit lokalen Variablen und dann unter den genannten Einschränkungen. "Direkt" kann man diese Kurzform der Array Initialisierung überall verwenden.

    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
    /**
     * 
     */
    package de.tutorials;
     
    /**
     * @author Thomas.Darimont
     * 
     */
    public class LocalsInitializationExample {
        String[] works = {"a","b"};
        String[] worksAlso;
        String[] doesNotWork;
        
        public LocalsInitializationExample(){
            worksAlso = new String[]{"gugu"};
            String[] antoherWorkingExample = {"gaga"};
            doesNotWork = {"bubu"};
        }
    }

    Gruß Tom
    @takidoso
    Schau dir mal Toms Beispiel an.

    MFG

    zEriX
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 22.11.10, 17:31
  2. Antworten: 3
    Letzter Beitrag: 26.02.10, 21:19
  3. Array initialisieren
    Von LukeS im Forum C/C++
    Antworten: 7
    Letzter Beitrag: 05.12.06, 08:46
  4. Antworten: 2
    Letzter Beitrag: 04.09.06, 12:07
  5. Tablet in PS initialisieren?
    Von Carndret im Forum Photoshop
    Antworten: 0
    Letzter Beitrag: 25.10.03, 18:06