java 字符串数组比较 运行时报错,百思不得其解,nb的人来帮帮吧,谢谢了~~~!!!

来源:百度知道 编辑:UC知道 时间:2024/07/04 00:23:22
private void checkAnswer()
{
for(int i=1;i<=number;i++)
{
if(answer[i].compareTo(correctAnswer[i])==0)
{
finalmask += mask[i];
}
}
}
这是一个考试系统的计算总分的方法
其中,answer[]是考生答案的数组从1开始,correctAnswer[] 不说大家也该知道了吧
compareTo,equals 我都用过了,还是不行,运行时:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Main.checkAnswer(Main.java:567)
at Main.jiaojuan(Main.java:598)
at Main.access$9(Main.java:596)
at Main$3.actionPerformed(Main.java:261)

就是定位到if(answer[i].compareTo(correctAnswer[i])==0)这行了,
天都亮了,我还在这写课程设计,大学生就是苦呀,来个帅哥帮帮俺吧,先谢谢了!!!
我的数组时从1开始的,方便,不想从0开始,呵呵

感谢各位的关心,但是有些回答我得纠正一下,免得害了后人
java 里面String 不是基本数据类型,String的比较也不能用==

equals 是比较的两个字符串是否一样
比如 “asd”.equals(“asd”)==true;
"==" 它比较的是两个“引用”
比如:
String a=new String ("a");
String b=new String ("a");
Sy

首先,你的for循环for(int i=1;i<=number;i++) 是从1开始的,不知道你这里有没有搞错。不过这个与你要提的问题不相干,忽略。

说重点。你的程序问题并不在这个函数里面,根本就不关compareTo,equals 的事儿,不信你可以自己试试看用这个函数在一个新建的类里面用。问题应该在你的Main类定义上面才对,不然就在你的图形界面上,你把整个Main给我吧,这样我才知道你到底错在哪里。我邮箱:forlml@gmail.com

然后,你是用netbeans做的?

最后,你还真是痛苦啊,课程设计都可以搞到这么早~~不错不错~~和我有得一拼啊。

java.lang.NullPointerException 是指你的数组下标超出了范围。是不是当i=number的时候超过了?为什么你不从0开始记下标?number是不是数组的长度?是的话就会出错,因为数组的最大下标是数组的长度减去1。answer和correctAnswer是字符数组?字符应该不能用compareTo和equals,因为这两个是给类使用的,字符是基本数据类型,应该不能使用。直接用==就应该可以。

数组时从0开始计算的,假如你的number是100,你有100道题目,其实你的数组时从answer[0]---->answer[99]的,你访问answer[100]肯定报java.lang.NullPointerException

不能够将一个null的对象与另一个对象直接比较
因为你在correctAnswert answer数组进行比较的时候其中出现了null值,所以会抛出这种错误,根据你的应用情况,correctAnswert应当没有null的可能,是不是有的题目没有做答导致answer中出现了null值,如果是,请将answer全部赋上一个"None Answer"初值。

从抛出的错误看,可以断定不是数组下标的错误!

main函数调用时发生了错误,我的邮箱zhanghongzhen0301@163.com
可以给我发源码,我帮你搞

教你个办法一下就查出来问题。
你取几个特殊数