簡體   English   中英

空指針錯誤:找不到聲明原因

[英]Null Pointer Error: Can't Find Declaration Cause

在控制台中:

SimulatedReality.main(SimulatedReality.java:25)處的線程“主”中的異常java.lang.NullPointerException

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

在我的代碼中,我試圖讀取一個文件並檢查其所有字符(或至少對於前十個字符),以查看是否有任何一個值。 我試圖這樣做一次以重置文檔的文本。 該代碼的問題是存在一個空指針錯誤,該錯誤是由聲明問題(或者至少是我所聽到的)引起的。 我找不到此錯誤在哪里。 請並感謝您為我提供幫助的任何人。 我是一個初學者,因此,如果過於簡化,解釋將是最好的。

文件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();
    }

我想我找到了您的問題(請遵循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();

幾個可能的問題...

您的文件可能少於10行。

然后readLine將返回null,下一行將失敗。 這里的文件

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

另外,您可能應該在開始讀取文件之前確保文件存在。

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

最后,僅通過閱讀代碼我就無法完全確定您要實現的目標。 但是,邏輯上肯定有一些不足。 我覺得奇怪的是, BasicChar是每行第i行的第i個字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM