2013-11-20 72 views
-1

這是我的代碼:異常在線程主體 - 我該如何解決這個問題

package net.james.filewrite; 

import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 

import net.james.game.WarGame; 

public class NewWriting { 
public static FileWriter filewriter; 
public static WarGame wg = new WarGame(); 
public static File f = new File("High Score.txt"); 


public static void createFile(){ 
    try { 
     filewriter = new FileWriter("High Score.txt", true); 
     System.out.println("Creating file"); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 


public static void write(){ 
    try { 
     filewriter.write("hi"); //<< line 27 
     filewriter.flush(); 
    }catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

public static void fileExists(){ 
    if (!f.exists()){ 
     System.out.println("NOPE!!!"); 
     createFile(); 
     write(); 
     System.out.println("now it does!"); 
    }else{ 
     System.out.println("YEP!"); 
     write(); 
    } 


} 
} 

當過我所說的「寫」的方法,它只是說:

異常線程「main」的Java。 lang.NullPointerException at net.james.filewrite.NewWriting.write(NewWriting.java:27)

如果有人能幫助我。我會非常感激。

+1

你在調用'write()'之前調用'createFile()'嗎?那個NullPointerException只能在'filewriter'爲空的時候發生,因爲它是在'createFile()'中初​​始化/賦值的,所以我只能假設你沒有先調用它。 –

+0

你的主要方法在哪裏?你是怎麼稱呼這個的? – Andrew

回答

0

您正在爲createFile()方法中的filewriter賦值(如果該文件不存在,則僅調用該值)。如果文件已存在,將不會調用createFile(),並且filewriter保持爲null。在write()之內,然後嘗試撥打filewriter.write(..),因文件撰寫人爲null而失敗。

0

如果你的文件f存在,createFile永遠不會叫,你將永遠不會實例化filewriter

if (!f.exists()){ 
    System.out.println("NOPE!!!"); 
    createFile(); 
    write(); 
    System.out.println("now it does!"); 
} 
else 
{ 
    System.out.println("YEP!"); 
    write(); 
} 

所以,你應該先刪除自己的文件(從代碼),當你初始化程序,或者你應該能夠處理文件已經存在的情況。這取決於你想要什麼行爲

相關問題