2016-11-04 2 views
1

Der folgende Code zum Lesen oder Dateien mit Java zu schreiben, aber:„Attribute und Objekte können nicht aufgelöst werden“ - Fehler

Eclipse-druckt diese Fehler:

  • buffer_1 nicht auf eine Variable
  • aufgelöst werden kann
  • file_reader nicht
  • werden kann
  • auch andere Attribute aufgelöst ...

was hier in diesem Code falsch ist:

//Class File_RW 
    package R_2; 

    import java.io.File; 
    import java.io.FileReader; 
    import java.io.FileNotFoundException; 
    import java.lang.NullPointerException; 

    public class File_RW { 
     public File_RW() throws FileNotFoundException, NullPointerException { 
      File file_to_read = new File("C:/myfiletoread.txt"); 
      FileReader file_reader = new FileReader(file_to_read); 
      int nr_letters = (int)file_to_read.length()/Character.BYTES; 
      char buffer_1[] = new char[nr_letters]; 
     } 
     public void read() { 
      file_reader.read(buffer_1, 0, nr_letters); 
     } 
     public void print() { 
      System.out.println(buffer_1); 
     } 
      public void close() { 
        file_reader.close(); 
      } 
      public File get_file_to_read() { 
        return file_to_read; 
      } 
      public int get_nr_letters() { 
        return nr_letters; 
      } 
      public char[] get_buffer_1() { 
        return buffer_1; 
      } 
      //... 
    } 

    //main method @ class Start: 

    package R_2; 

    import java.io.File; 
    import java.io.FileReader; 
    import java.io.FileNotFoundException; 
    import java.lang.NullPointerException; 

    public class Start { 
      public static void main(String[] args) { 
       File_RW file = null; 
      try { 
       file = new File_RW(); 
      } catch (NullPointerException e_1) { 
       System.out.println("File not found."); 
      } 
        //... 
     } 
    } 

ich keinen Fehler finden kann. Ich habe auch versucht, eine try catch-Anweisung in den Konstruktor der Klasse "File_RW" einzuschließen, aber die Fehlermeldungen waren die gleichen.

+0

Sie benötigen die Teilnehmer _declare_ (zB 'file_reader', etc) in Ihrer Klasse, dann _initialisieren Sie sie im Konstruktor. – pathfinderelite

+0

Wenn Sie einen Fehler erhalten, haben Sie wahrscheinlich einen Fehler gemacht. – chrylis

+1

Ein weiterer subtiler Hinweis: Sie müssen keine Klassenform importieren, die im java.lang-Paket enthalten ist (wie beispielsweise NullPointerException)! Und dann: Fluchen hilft nicht. Was hier wirklich falsch ist, ist, dass Sie zuerst 50 Zeilen Code geschrieben haben, bevor Sie den Compiler das erste Mal ausführen. Oder dass Sie die Fehlermeldungen ignorieren, die Ihnen eclipse gibt, sobald Sie Ihren Code durcheinander gebracht haben! – GhostCat

Antwort

1

Ja, gibt es Fehler in Ihrem Code - die Natur wirklich Grund sind: Sie Variablen deklarieren statt Felder. Bedeutung: Sie haben sie im Konstruktor, aber sie müssen eine Ebene höher gehen! Wenn Sie eine Entität innerhalb eines Konstruktors oder einer Methode deklarieren, ist es eine Variable, die nur innerhalb dieses Konstruktors/Methode existiert.

Wenn Sie möchten, dass mehrere Methoden Verwendung dieser Einheit machen, braucht es ein Feld, im Rahmen der umschließenden Klasse deklariert werden, wie:

class FileRW { 
    private File fileToRead = new File... 
    ... 

und dann können Sie Ihre verwenden Felder in all Ihren Methoden! Bitte beachten Sie: Sie können die eigentliche Einrichtung in Ihrem Konstruktor vornehmen:

class FileRW { 
    private File fileToRead; 

    public FileRW() { 
    fileToRead = .. 

aber Sie müssen nicht.

Schließlich: lesen Sie bitte über Java-Konventionen. Sie vermeiden die Verwendung von "_" in Namen (nur für SOME_CONSTANT)!

Verwandte Themen