JAVA程序有问题!!大家过来帮忙

太白山鹰 2009-12-03 03:35:05
import java.util.Random;

public class TableBones {
private int m_aAllWord[];
private int m_aAllValue[];
public int p_allword[];
private Bone m_aBone[]; // 总共使用的牌
private Bone m_aTableBone[]; // 桌面上的牌
private int m_nRemainBones; // 尚未翻开的牌的数量
private int m_nTableBones; // 桌面上牌的数量
private Random m_Random=new Random();

public TableBones() {
try {
Image imgBase = Image.createImage("/demo/base.png");
Image imgWord = Image.createImage("/demo/word.png");
int total = 84;
m_aBone = new Bone[total];//总共使用的牌
for (int n = 0; n < total; n++) {
m_aBone[n] = new Bone(imgWord, imgBase);
}
m_aTableBone = new Bone[total];
total = 136;// 9*4*3+7*4;
m_aAllWord = new int[total];
m_aAllValue = new int[total];
for (int n = 0; n < total; n++) {
int word = n / 36;
int value = n % 9;
if (word >= 3)
value = n % 7;
m_aAllWord[n] = word;
m_aAllValue[n] = value;
System.out.println("获取数据m_aAllValue[n]=" + m_aAllValue[n]);
}
} catch (Exception exception) {
}
}

public void Reset() {
// 进行70次洗牌
int times = 70;
for (int n = 0; n < times; n++) {
int i = m_Random.nextInt() % 136;//randomInt.nextInt获取随机数,length=136
i = Math.abs(i);
int j = m_Random.nextInt() % 136;
j = Math.abs(j);

int temp = m_aAllWord[i];//**********这一报错!
m_aAllWord[i] = m_aAllWord[j];
m_aAllWord[j] = temp;

temp = m_aAllValue[i];
m_aAllValue[i] = m_aAllValue[j];
m_aAllValue[j] = temp;
}
// 取前面的牌做为使用的牌
for (int n = 0; n < m_aBone.length; n++) {//设置所以牌,length=84
m_aBone[n].setType(m_aAllWord[n], m_aAllValue[n]);
}
m_nRemainBones = m_aBone.length;
m_nTableBones = 0;
}

public static void main(String args[]){

//m_aAllWord= new int [136];
TableBones a;//***************************8这一行报错
a=new TableBones();
a.Reset();
for(int j=0;j<136;j++){
System.out.println("获得的牌为"+a.m_aAllWord[j]);
}


}
}
程序报错
Exception in thread "main" java.lang.NullPointerException
at TableBones.Reset(TableBones.java:51)
at TableBones.main(TableBones.java:72)
...全文
99 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
kf156 2009-12-04
  • 打赏
  • 举报
回复
呵,youthon兄别激动,有话好说,不骂人哦
弘石 2009-12-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhouyongyang 的回复:]
而你的"m_aAllWord[n] = word; "中的n只是"0到3"中的一个数,不报错才怪了
[/Quote]
在类的构造函数里把m_aAllWord初始化为长度136的数组了
total = 136;// 9*4*3+7*4;
m_aAllWord = new int[total];
softice_ 2009-12-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zhouyongyang 的回复:]
而你的"m_aAllWord[n] = word; "中的n只是"0到3"中的一个数,不报错才怪了
[/Quote]
虽然只是0-3,但绝不是null呀
弘石 2009-12-03
  • 打赏
  • 举报
回复
我真佩服你们,我都测试过了,没有问题
5楼你个bc
woshigexiaonvren 2009-12-03
  • 打赏
  • 举报
回复
3楼说的很正确啊
弘石 2009-12-03
  • 打赏
  • 举报
回复
这段程序没错,这里面的动态数值是不是你给改成固定的了?
zhouyongyang 2009-12-03
  • 打赏
  • 举报
回复
而你的"m_aAllWord[n] = word; "中的n只是"0到3"中的一个数,不报错才怪了
zhouyongyang 2009-12-03
  • 打赏
  • 举报
回复
"int temp = m_aAllWord[i];//**********这一报错! "

你这行肯定会报错的,,,:
"int i = m_Random.nextInt() % 136,i = Math.abs(i);",,,

这里面的i可能是"0到135中的任何一个数"
softice_ 2009-12-03
  • 打赏
  • 举报
回复
没找出来,帮顶
你逐行跟踪找到的出错位置吗?
你不妨在构造方法最后把m_aAllWord的所有值打印一下
kf156 2009-12-03
  • 打赏
  • 举报
回复

try {
Image imgBase = Image.createImage("/demo/base.png");
Image imgWord = Image.createImage("/demo/word.png");
int total = 84;
m_aBone = new Bone[total];//总共使用的牌
for (int n = 0; n < total; n++) {
m_aBone[n] = new Bone(imgWord, imgBase);
}
m_aTableBone = new Bone[total];
total = 136;// 9*4*3+7*4;
m_aAllWord = new int[total];
m_aAllValue = new int[total];
for (int n = 0; n < total; n++) {
int word = n / 36;
int value = n % 9;
if (word >= 3)
value = n % 7;
m_aAllWord[n] = word;
m_aAllValue[n] = value;
System.out.println("获取数据m_aAllValue[n]=" + m_aAllValue[n]);
}
} catch (Exception exception) {
e.printStackTrace();//把错误打出来,估计是前边的图片没加载成功
}
}

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧