"属性和对象无法解析" - 错误

时间:2016-11-04 19:46:41

标签: java

以下代码用于使用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.");
            }
                    //...
        }
    }

我找不到任何错误。我还尝试在类的构造函数中包含try catch语句" File_RW",但错误消息是相同的。

2 个答案:

答案 0 :(得分:1)

是的,您的代码中存在错误 - 具有非常基本性质:您声明变量而不是字段即可。 含义:你在构造函数中有它们,但是它们需要一层了!在构造函数或方法中声明实体时,它是变量,只存在于该构造函数/方法中。

如果您希望多个方法可以使用该实体,则它必须是字段,在封闭类的范围内声明,如:

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

然后您可以在所有方法中使用字段!请注意:您可以在构造函数中进行实际设置:

class FileRW {
  private File fileToRead;

  public FileRW() {
    fileToRead = ..

但你不必这样做。

最后:请阅读有关java语言约定的内容。你避免使用" _"在名称中(仅适用于SOME_CONSTANT)!

答案 1 :(得分:0)

javacode已经在运行...... thx 在Visual Studio express中使用c ++编辑的相同程序... 访问stackoverflow条目链接: c++ file read write-error: Microsoft Visual C++ Runtime libr..debug Assertion failed, expr. stream.valid()