2016-11-04 50 views
1

下面的代碼是閱讀或使用Java語言編寫的文件,但是:「屬性和對象不能被解析」 - 錯誤

的Eclipse打印這些錯誤:

  • buffer_1不能被解析爲一個變量
  • file_reader不能得到解決
  • 還有其他屬性 ...

什麼是錯在這裏驗證碼:

//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."); 
      } 
        //... 
     } 
    } 

我找不到任何錯誤。我還試圖在類「File_RW」的構造函數中包含try catch語句,但錯誤消息相同。

+0

您需要_declare_類成員(例如'file_reader'等)在你的類中,然後_initialize_他們在構造函數中。 – pathfinderelite

+0

如果您遇到錯誤,您可能犯了一個錯誤。 – chrylis

+1

另一個微妙的提示:你不需要導入任何生存在java.lang包中的類表單(比如NullPointerException)!然後:詛咒沒有幫助。這裏有點不對勁的是,在第一次運行編譯器之前,你首先編寫了50多行代碼。或者你一直忽略錯誤信息,一旦你開始搞亂你的代碼,eclipse就會給你提供! – GhostCat

回答

1

是的,有錯誤在你的代碼 - 這是真正基本的性質:您聲明變量代替領域的。 含義:你有他們在構造函數中,但他們需要去一層!當你在一個構造函數或方法中聲明一個實體時,它是一個只存在於該構造函數/方法中的變量

如果你想有多種方法可以利用該實體的,它需要一個,在封閉類的範圍內聲明,如:

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

,然後你可以使用你字段在您的所有方法!請注意:您可以在您的構造函數中執行實際設置:

class FileRW { 
    private File fileToRead; 

    public FileRW() { 
    fileToRead = .. 

但您不必這樣做。

最後:請閱讀有關Java語言約定。您避免在名稱中使用「_」(僅適用於SOME_CONSTANT)!