初学,实在搞不懂了,自己做的一个单词类,单词按照15字符英文,30字符中文格式打包成res,然后读取,读取后建立公共Word对象数组。出现NullPointerException问题,查了一天搞不懂,那位学长来指点一下,不胜感激。//------简单的CWord类
Class CWord
{
public String strEnglish;
public String strChinese;
public CWord(){}
}//============CWordLib类,运行出现NullPointerException=======================
import java.io.IOException;
import java.io.InputStream; public class CWordLib {
public CWord[] aobjWord; public CWordLib(String strResPath)
{
int i,j; try
{
//从资源中读取词库,词库规格为15个字符的E文,30个字符的中文
InputStream objIs=this.getClass().getResourceAsStream(strResPath);
byte[] abytBuffer=new byte[objIs.available()];
objIs.read(abytBuffer);
objIs.close();
//资源文本格式为utf8
String strWordList=new String(abytBuffer,"UTF-8");
//每个单词中英文共45个字符,将文本长度/45计算单词数目
j=strWordList.length()/45; CWord[] aobjWord=new CWord[j];
//将每个单词装入aobjWord对象数组
for (i=0;i<j;i++)
{
aobjWord[i]=new CWord();
aobjWord[i].strEnglish=strWordList.substring(i*45,i*45+15);
aobjWord[i].strChinese=strWordList.substring(i*45+16,i*45+45);
//这里用system.out.println(aobjWord[i].strEnglish)都显示正常
}
}//try
catch (IOException e)
{
aobjWord=new CWord[0];
System.out.println("Vocabulary resource load failed.");
}
}//public ovid CWordLib
public static void main(String[] astrArgument)
{
CWordLib objWlb=new CWordLib("Cet4Vocabulary.txt");
//问题在下面这句,出现NULLPointException
System.out.println(objWlb.aobjWord.length);
System.out.println("normal end");
}
}
Class CWord
{
public String strEnglish;
public String strChinese;
public CWord(){}
}//============CWordLib类,运行出现NullPointerException=======================
import java.io.IOException;
import java.io.InputStream; public class CWordLib {
public CWord[] aobjWord; public CWordLib(String strResPath)
{
int i,j; try
{
//从资源中读取词库,词库规格为15个字符的E文,30个字符的中文
InputStream objIs=this.getClass().getResourceAsStream(strResPath);
byte[] abytBuffer=new byte[objIs.available()];
objIs.read(abytBuffer);
objIs.close();
//资源文本格式为utf8
String strWordList=new String(abytBuffer,"UTF-8");
//每个单词中英文共45个字符,将文本长度/45计算单词数目
j=strWordList.length()/45; CWord[] aobjWord=new CWord[j];
//将每个单词装入aobjWord对象数组
for (i=0;i<j;i++)
{
aobjWord[i]=new CWord();
aobjWord[i].strEnglish=strWordList.substring(i*45,i*45+15);
aobjWord[i].strChinese=strWordList.substring(i*45+16,i*45+45);
//这里用system.out.println(aobjWord[i].strEnglish)都显示正常
}
}//try
catch (IOException e)
{
aobjWord=new CWord[0];
System.out.println("Vocabulary resource load failed.");
}
}//public ovid CWordLib
public static void main(String[] astrArgument)
{
CWordLib objWlb=new CWordLib("Cet4Vocabulary.txt");
//问题在下面这句,出现NULLPointException
System.out.println(objWlb.aobjWord.length);
System.out.println("normal end");
}
}
解决方案 »
- Map的排序问题
- 求一算法!!!
- 怎么让按钮同时按下
- 很有意思的一道面试题,高手进来看看.
- 再次讨论struts中数据集合提交问题
- 请问哪儿有《最新 JAVA 2 核心技术》 卷I 和卷II 下载??
- 大家有没有碰到过JTextArea.setText()不上的时候,我已经碰到好多次了,虽然机率很小。我该怎么解决?
- 想用动态变量给静态变量赋初值,能做到吗?
- 为什么会编译失败?一个异常的问题
- 大家觉得学习Jbuild有没有必要?????
- private static final long serialVersionUID = 1L; 这个!L是随便写写的吧?我们也可以随意给它一个值吧。?
- swing 弹出菜单显示在窗体外面
或者objWlb不为null 但是aobjWord为null
你这个代码写得不安全 像这种以文件名做参数的肯定要判断是否为null
在for里面逐个载入aobjWord时也中英文显示正常
我是初学,问题可能出在语法细节上,比方定义之类,请大家帮帮忙,分不够我会再加晚上又查了一遍Java2参考,还是没搞懂。