Java中的空指针异常怎么对付?
以下是源代码:packagetank;importjava.applet.Applet;importjava.applet.AudioClip;importjava.aw...
以下是源代码:
package tank;
import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
public class BltTank extends Applet
implements Runnable{
boolean fGameIsLoaded;
int fStatus;
static Font fFont1 = new Font("Times", 1, 10);
int fYMidScr;
Image fOffScrImage;
static int fFont1Height;
int fScreenHeight;
ZWorld fWorld;
int fScreenWidth;
int fXMidScr;
Graphics fOffScrGraphics;
static int fFont2Height;
Thread fThread;
AudioClip fBgrSnd;
Image fTitleImage;
static Font fFont2 = new Font("Times", 1, 20);
int fStatsLeftMargin;
public void run() {
System.out.println("run()");
createGame();
enterIntro();
fBgrSnd.loop();
}
public void createGame() {
System.out.println(fGameIsLoaded);
if(!fGameIsLoaded) {
fScreenWidth = size().width; //int 类型
//size()方法,return Dimension对象 width是宽度
fScreenHeight = size().height;
// return 高度
fXMidScr = fScreenWidth / 2;
// 高度 / 2
fYMidScr = fScreenHeight / 2;
//高度 / 2;
fOffScrImage = createImage(fScreenWidth, fScreenHeight);
fOffScrGraphics = fOffScrImage.getGraphics();
fOffScrGraphics.setFont(fFont1);
FontMetrics fontmetrics = fOffScrGraphics.getFontMetrics();
//拿到当前字体的字体规格
fFont1Height = fontmetrics.getHeight();
//拿到高度
fStatsLeftMargin = fontmetrics.stringWidth("ENEMIES");
fOffScrGraphics.setFont(fFont2);
fontmetrics = fOffScrGraphics.getFontMetrics();
fFont2Height = fontmetrics.getHeight();
fTitleImage = loadImage("title.gif");
}
}
public void init() {
System.out.println("我爱你00");
}
public void start() {
System.out.println("你好");
if(fThread == null) {
fThread = new Thread(this);
fThread.start();
}
}
public void destroy() {
System.out.println("dsddfs");
}
private void enterIntro() {
fStatus = 1;
fWorld.RemoveAllObjects();
}
public Image loadImage(String s) { // s = title.gif
MediaTracker mediatracker = new MediaTracker(this);
System.out.println(getCodeBase().toString());
Image image = getImage(getCodeBase(), s);
//getImage(getCodeBase(), title.gif);
return image;
}
}
====================================================================
package tank;
public class ZWorld {
int fNumObjects;
public void RemoveAllObjects() {
fNumObjects = 0;
}
}
我不是要try{}catch() {}
而是要帮我解决这个程序中的这个异常,以及造成空指针引起的原因,
希望说详细点,越详细越好,拜托了,谢谢
这是异常信息:
Exception in thread "Thread-3" java.lang.NullPointerException
at tank.BltTank.enterIntro(BltTank.java:82)
at tank.BltTank.run(BltTank.java:34)
at java.lang.Thread.run(Unknown Source) 展开
package tank;
import java.applet.Applet;
import java.applet.AudioClip;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
public class BltTank extends Applet
implements Runnable{
boolean fGameIsLoaded;
int fStatus;
static Font fFont1 = new Font("Times", 1, 10);
int fYMidScr;
Image fOffScrImage;
static int fFont1Height;
int fScreenHeight;
ZWorld fWorld;
int fScreenWidth;
int fXMidScr;
Graphics fOffScrGraphics;
static int fFont2Height;
Thread fThread;
AudioClip fBgrSnd;
Image fTitleImage;
static Font fFont2 = new Font("Times", 1, 20);
int fStatsLeftMargin;
public void run() {
System.out.println("run()");
createGame();
enterIntro();
fBgrSnd.loop();
}
public void createGame() {
System.out.println(fGameIsLoaded);
if(!fGameIsLoaded) {
fScreenWidth = size().width; //int 类型
//size()方法,return Dimension对象 width是宽度
fScreenHeight = size().height;
// return 高度
fXMidScr = fScreenWidth / 2;
// 高度 / 2
fYMidScr = fScreenHeight / 2;
//高度 / 2;
fOffScrImage = createImage(fScreenWidth, fScreenHeight);
fOffScrGraphics = fOffScrImage.getGraphics();
fOffScrGraphics.setFont(fFont1);
FontMetrics fontmetrics = fOffScrGraphics.getFontMetrics();
//拿到当前字体的字体规格
fFont1Height = fontmetrics.getHeight();
//拿到高度
fStatsLeftMargin = fontmetrics.stringWidth("ENEMIES");
fOffScrGraphics.setFont(fFont2);
fontmetrics = fOffScrGraphics.getFontMetrics();
fFont2Height = fontmetrics.getHeight();
fTitleImage = loadImage("title.gif");
}
}
public void init() {
System.out.println("我爱你00");
}
public void start() {
System.out.println("你好");
if(fThread == null) {
fThread = new Thread(this);
fThread.start();
}
}
public void destroy() {
System.out.println("dsddfs");
}
private void enterIntro() {
fStatus = 1;
fWorld.RemoveAllObjects();
}
public Image loadImage(String s) { // s = title.gif
MediaTracker mediatracker = new MediaTracker(this);
System.out.println(getCodeBase().toString());
Image image = getImage(getCodeBase(), s);
//getImage(getCodeBase(), title.gif);
return image;
}
}
====================================================================
package tank;
public class ZWorld {
int fNumObjects;
public void RemoveAllObjects() {
fNumObjects = 0;
}
}
我不是要try{}catch() {}
而是要帮我解决这个程序中的这个异常,以及造成空指针引起的原因,
希望说详细点,越详细越好,拜托了,谢谢
这是异常信息:
Exception in thread "Thread-3" java.lang.NullPointerException
at tank.BltTank.enterIntro(BltTank.java:82)
at tank.BltTank.run(BltTank.java:34)
at java.lang.Thread.run(Unknown Source) 展开
展开全部
try catch对付或者throw后再try catch
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
出现空指针是程序员的问题,一般都是粗心,不然就是设计有问题
要说怎么对付,这完全应该是不能让它出现,就是细心点呗
你放在try里也解决不了问题啊
要说怎么对付,这完全应该是不能让它出现,就是细心点呗
你放在try里也解决不了问题啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
程序里多判断下对象是不是为空,如果为空就做为空的操作啦
例如:
String a = null;
if(a!=null){
a="baidu";
}else{
a="google";
}
例如:
String a = null;
if(a!=null){
a="baidu";
}else{
a="google";
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ZWorld fWorld //你初始化,这里他是null
在82行
fWorld.RemoveAllObjects(); //此时fworld仍是null
所以抛出nullpointerexception
初始化他就行了
ZWorld fWorld = new ZWorld();
在82行
fWorld.RemoveAllObjects(); //此时fworld仍是null
所以抛出nullpointerexception
初始化他就行了
ZWorld fWorld = new ZWorld();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询