2013-11-20 32 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(); 
} 

所以,你应该先删除自己的文件(从代码),当你初始化程序,或者你应该能够处理文件已经存在的情况。这取决于你想要什么行为

相关问题