空指针错误:找不到声明原因

时间:2014-05-09 19:22:18

标签: java

在控制台中:

  
    

线程“main”java.lang.NullPointerException中的异常         在SimulatedReality.main(SimulatedReality.java:25)

  

第25行是“BecomesArray = ReadsLine.toCharArray();”。

在我的代码中,我试图读取一个文件并检查其所有字符(或至少是前十个)以查看是否有值为1。我试图这样做,以便在使用一次后重置文档的文本。代码的问题是由于声明问题(或者至少是我听到的)引起的空指针错误。我找不到这个错误的位置。请帮助我,无论谁帮助我。我是初学者,如果过度简化,解释将是最好的。

  

文件SRFile =新文件(“C:/Users/ThinkingBeing/Documents/SRFile.txt”);

    SRFileWriter = new   
            FileWriter("C:/Users/ThinkingBeing/Documents/SRFile.txt");
    if(!SRFile.exists()){
            SRFile.createNewFile();
        SRFileWriter.write("000000");
        System.out.println("File now exists.");
    } else {
    for(int i=0;i<=5;i++){          
    SRFileReader = new BufferedReader(new FileReader(SRFile));      
    ReadsLine = SRFileReader.readLine();
    BecomesArray = ReadsLine.toCharArray(); 
    BasicChar = BecomesArray[i];
    if(BasicChar!='0'){         
        SRFileWriter.write("000000");
        System.out.println("File Off Of Counter. Counter Fixed.");
    }
    }
    SRFileWriter.close();
    SRFileReader.close();
    }

2 个答案:

答案 0 :(得分:1)

我认为我找到了您的问题(请遵循Java命名约定)。

SRFileReader = new BufferedReader(new FileReader(SRFile)); // <-- file reader once
ReadsLine = SRFileReader.readLine();
BecomesArray = ReadsLine.toCharArray(); 
FileWriter SRFileWriter = new FileWriter
    ("C:/Users/ThinkingBeing/Documents/SRFile.OUT.txt"); // <-- Don't write to 
                                       // your input file while you're reading it.

for(int i=0;i<(BecomesArray != null) ? BecomesArray.length : 0;i++){
  // SRFileReader = new BufferedReader(new FileReader(SRFile));      
  BasicChar = BecomesArray[i];
  if(!SRFile.exists()||BasicChar=='1'){
    // SRFile.createNewFile(); // <-- Would clear your input file.
    SRFileWriter.write("00BOOYTA"); // <-- which was also your output file.
  }
}
SRFileWriter.close();
SRFileReader.close();

答案 1 :(得分:0)

几个可能的问题......

您的文件可能少于10行。

然后readLine将返回null,下一行将失败。文档here

ReadsLine = SRFileReader.readLine();
BecomesArray = ReadsLine.toCharArray(); 

此外,在开始阅读之前,您应该确保文件存在。

if(!SRFile.exists()||BasicChar=='1'){

最后,通过阅读您的代码,我无法完全了解您尝试实现的目标。但这肯定与逻辑有关。我觉得很奇怪BasicChar是每一行第i行的第i个字符。