[Java] Illegal Start of Expression (2x) und Reached End of File

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von osiris, 12. April 2010 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 12. April 2010
    Illegal Start of Expression (2x) und Reached End of File

    Tag,

    hab da ein kleines Problem mit einem Programm, was ich geschrieben habe (respektive ein Kollege von mir).

    Beim komplieren des Beispielprogramms kommen 2x Illegal Start of Expression und 1x Reached End of File while parsing.

    Hier der Code:
    Code:
    //Bsp03
    //Demoprogramm das, die Methoden der Klasse GenericArrayBasedQueue ermˆglicht
    
    public class Bsp03{
     
     public static void main(String args[]){
     
     char menue;
     GenericArrayBasedQueue<String> queue = new GenericArrayBasedQueue<String>();
     
     do{
     System.out.println("Um ein Element in die Queue einzufuegen druecken Sie \"e\"");
     System.out.println("Um ein Element zu entfernen druecken Sie \"d\"");
     System.out.println("Um eine neue Queue zu erstellen druecken Sie \"n\"");
     System.out.println("Um eine neue Queue mit bestimmter Laenge zu erstellen druecken Sie \"m\"");
     System.out.println("Um das Programm zu beenden druecken Sie \"f\"");
     menue = SavitchIn.readNonwhiteChar();
     
     if (menue == 'e'){
     System.out.println("Geben Sie einen String ein, der an Ihre Queue angeh‰ngt werden soll.");
     String s = SavitchIn.readLine();
     queue.enque(s);
     }
     else if (menue == 'd'){
     if (queue.isEmpty == false){
     s = queue.dequeue;
     System.out.println(s + "wurde aus der Liste entfernt.");
     }
     else{
     System.out.println("Ihre Queue ist bereits leer.");
     }
     } 
     else if (menue == 'n'){
     queue = new GenericArrayBasedQueue<String>();
     }
     else if (menue == 'm'){
     System.out.println("Wie lange soll Ihr Array werden?");
     int n = SavitchIn.readInt; 
     if (n <= 0){
     System.out.println("Ihre Eingabe ist nicht möglich!");
     }
     else{
     queue = new GenericArrayBasedQueue<String>(n);
     }
     }
     else if (menue == 'f'){
     return
     }
     }
     while (menue != 'f')
     }
    }
    Error Meldungen:

    Code:
    javac -Xlint Bsp03.java
    Bsp03.java:50: illegal start of expression
     }
     ^
    Bsp03.java:53: illegal start of expression
     }
     ^
    Bsp03.java:54: reached end of file while parsing
    }
     ^
    3 errors
    
    Bitte um Hilfe.
     
  2. 12. April 2010
    AW: Illegal Start of Expression (2x) und Reached End of File

    da fehlt n ";" hinter dem while
     
  3. 12. April 2010
    AW: Illegal Start of Expression (2x) und Reached End of File

    Zeile sieht nun so aus:
    while (menue != 'f');

    Die Fehler 1 & 3 bleiben gleich, Fehler 2 ändert sich zu:
    Bsp03.java:53: while expected
     
  4. 12. April 2010
    AW: Illegal Start of Expression (2x) und Reached End of File

    Code:
    else if (menue == 'm'){
     System.out.println("Wie lange soll Ihr Array werden?");
     int n = SavitchIn.readInt; 
     if (n <= 0){
     System.out.println("Ihre Eingabe ist nicht möglich!");
     }
     else{
     queue = new GenericArrayBasedQueue<String>(n);
     }
     }
     else if (menue == 'f'){
     return ;
     }
    beim letzten return fehlt ein ";"

    das if statement kannst du auch weglassen.
    die bedingung für das beenden prüfst du ja in der while-schleife

    aus deinen ifs kannst du ein switch-case statment machen. sieht schöner aus

    Code:
    if (queue.isEmpty == false)
    daraus solltest du
    Code:
    if (!queue.isEmpty)
    machen

    und
    Code:
    if (menue == 'e')
     {
     System.out.println("Geben Sie einen String ein, der an Ihre Queue angehängt werden soll.");
     String s = SavitchIn.readLine();
     queue.enque(s);
     }
    zu
    Code:
    if (menue == 'e')
     {
     System.out.println("Geben Sie einen String ein, der an Ihre Queue angehängt werden soll.");
     queue.enque(SavitchIn.readLine());
     }
    ändern

    ich würde für die einzelnen sachen lieber funktionen bauen.
    macht den code schlanker ^^

    so nun reichts aber auch mit dem meckern. sollte es immer noch nicht gehen sag bescheid
     
  5. 12. April 2010
    AW: Illegal Start of Expression (2x) und Reached End of File

    Noch was nebenbei, normalerweise werden Strings nicht mit
    Code:
    if(str1 == str2)
    verglichen weil == in Java vergleicht, ob das Objekt das selbe ist. Zwar kann das in diesem Fall durchaus funktionieren, weil die Strings kurz sind und Java dann intern mit Flyweights arbeitet, aber normalerweise benutzt man equals.
    Code:
    if(str.equals(str2))

    // Überlesen, dass es ein char ist, das geht natürlich, da kein Objekt!
     
  6. 12. April 2010
    AW: Illegal Start of Expression (2x) und Reached End of File

    Danke schonmal an alle.

    Jetzt sind wohl noch einige Fehler unterm Teppich rausgekommen:

    Code:
    MB:Java lordosiris$ javac Bsp03.java
    Bsp03.java:23: cannot find symbol
    symbol : method enque(java.lang.String)
    location: class GenericArrayBasedQueue<java.lang.String>
     queue.enque(SavitchIn.readLine());
     ^
    Bsp03.java:26: cannot find symbol
    symbol : variable isEmpty
    location: class GenericArrayBasedQueue<java.lang.String>
     if (queue.isEmpty == false){
     ^
    Bsp03.java:27: cannot find symbol
    symbol : variable s
    location: class Bsp03
     s = queue.dequeue;
     ^
    Bsp03.java:27: cannot find symbol
    symbol : variable dequeue
    location: class GenericArrayBasedQueue<java.lang.String>
     s = queue.dequeue;
     ^
    Bsp03.java:28: cannot find symbol
    symbol : variable s
    location: class Bsp03
     System.out.println(s + "wurde aus der Liste entfernt.");
     ^
    Bsp03.java:39: cannot find symbol
    symbol : variable readInt
    location: class SavitchIn
     int n = SavitchIn.readInt; 
     ^
    6 errors
    
    Bin heute schon leicht verwirrt.
    Class dazu:

    Code:
    //Bsp03
    //Klasse die erm^glicht eine generische Queue zu erstellen und zu bearbeiten
    
    public class GenericArrayBasedQueue<T> {
    
     //Instanzvariablen:
     int head, tail;
     T[] queue;
     
     //Konstruktoren: 
     GenericArrayBasedQueue(){
     T[] queue = (T[]) (new Object[100]);
     head = 0;
     tail = 0;
     }
     
     GenericArrayBasedQueue(int n){
     T[] queue = (T[]) (new Object[n]); //requires n > 0
     head = 0;
     tail = 0;
     }
     
     
     //Methoden:
     
     //Fuegt ein neues Element in die Queue ein, tail zeigt auf naechste Position.
     void enqueue(T e){
     
     queue[tail] = e;
     tail = tail + 1;
     tail = tail % queue.length;
     
     //Array voll, neues array mit doppelter L?nge anlegen und elemente kopieren
     if (tail == head){
     T[] hilf = (T[]) (new Object[queue.length*2]);
     // Elemente kopieren
     for (int i=0; i<queue.length; i++){
     hilf[i] = queue[head];
     head = head + 1;
     head = head % queue.length;
     }
     
     // Referenz wieder richtig setzen
     head = 0;
     tail = queue.length;
     queue = hilf;
     }
     
     }
     
     
     T dequeue(){ //requires !isEmpty
     
     T hilf = queue[head];
     head = head + 1;
     head = head % queue.length;
     return hilf;
     }
     
     boolean isEmpty(){
     if (head == tail)
     return true;
     else
     return false;
     }
    }
    
     
  7. 12. April 2010
    AW: Illegal Start of Expression (2x) und Reached End of File

    Fehler 1: Tippfehler, es heisst enqueue
    Fehler 2: da isEmpty eine Funktion ist, fehlt hinten "()"
    Fehler 3: anscheinend hast du s nicht deklariert
    Fehler 4: genau wie 2 , fehlt "()"
    Fehler 5: wie 3
    Fehler 6: wie 2 & 4
     
  8. 12. April 2010
    AW: Illegal Start of Expression (2x) und Reached End of File

    arbeitest du nicht mit eclipse?
    da hättest du keinen der fehler gemacht bzw. du hättest es sofort gemerkt und eclipse hätte dir eine lösung angeboten.
     
  9. 12. April 2010
    AW: Illegal Start of Expression (2x) und Reached End of File

    Gut, lässt sich nun kompilieren & starten..
    wenn ich allerdings e drücke & eine Element einfügen will, kommt folgendes:

    Code:
    WLAN-DUDE:java lordosiris$ java Bsp03
    Um ein Element in die Queue einzufuegen druecken Sie "e"
    Um ein Element zu entfernen druecken Sie "d"
    Um eine neue Queue zu erstellen druecken Sie "n"
    Um eine neue Queue mit bestimmter Laenge zu erstellen druecken Sie "m"
    Um das Programm zu beenden druecken Sie "f"
    e
    Geben Sie einen String ein, der an Ihre Queue angeh?ngt werden soll.
    Exception in thread "main" java.lang.NullPointerException
     at GenericArrayBasedQueue.enqueue(GenericArrayBasedQueue.java:31)
     at Bsp03.main(Bsp03.java:24)
    
     
  10. 12. April 2010
    AW: Illegal Start of Expression (2x) und Reached End of File

    Als erstes besorgst du dir mal eine IDE (Eclipse oder Netbeans). Java ohne IDE zu programmieren ist grausam....

    Danach setzt du ein Breakpoint auf diese zeile:
    Code:
     menue = SavitchIn.readNonwhiteChar();
    und startest den Debugger... dann lässt du das Programm schrittweise ausführen und du wirst deinen Fehler erkennen.


    Falls dir dann noch eine intelligente Frage einfällt, kannst du sie gerne posten.... ich hoffe du schreibst in der nächsten Zeit keine Klausur über programmieren, das würde nämlich sicher in die Hose gehen^^ Kauf dir auch mal ein Anfänger Buch...
     
  11. 13. April 2010
    AW: Illegal Start of Expression (2x) und Reached End of File

    Ja, tut mir Leid.

    Text Editor FTW.

    Hab die Fehler gefunden, dankeschön.
     
  12. 13. April 2010
    AW: Illegal Start of Expression (2x) und Reached End of File

    [X] erledigt

    closed
     
  13. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.