2012-09-05 66 views
3

我知道这可能是一个非常愚蠢的问题,但我正在测试drJav中的交互窗格。为什么drJava在我的字符串中向我抛出一个错误?

我创建一个字符串变量,然后尝试做就可以了.length

String fish; 
String[] hooo; 
hooo.length 

然后我得到一个错误,whic我百思不得其解:

edu.rice.cs.util.UnexpectedException: java.lang.NullPointerException 
    at edu.rice.cs.drjava.model.repl.newjvm.MainJVM$ResultHandler.forUnexpectedException(MainJVM.java:1045) 
    at edu.rice.cs.drjava.model.repl.newjvm.MainJVM$ResultHandler.forUnexpectedException(MainJVM.java:992) 
    at edu.rice.cs.drjava.model.repl.newjvm.InterpretResult$UnexpectedExceptionResult.apply(InterpretResult.java:111) 
    at edu.rice.cs.drjava.model.repl.newjvm.MainJVM.interpret(MainJVM.java:351) 
    at edu.rice.cs.drjava.model.repl.RMIInteractionsModel._interpret(RMIInteractionsModel.java:75) 
    at edu.rice.cs.drjava.model.repl.InteractionsModel.interpret(InteractionsModel.java:291) 
    at edu.rice.cs.drjava.model.repl.InteractionsModel$2$1.run(InteractionsModel.java:241) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.NullPointerException 
    at java.lang.reflect.Array.getLength(Native Method) 
    at edu.rice.cs.dynamicjava.symbol.ArrayLengthField$1.value(ArrayLengthField.java:27) 
    at edu.rice.cs.dynamicjava.interpreter.ExpressionEvaluator.visit(ExpressionEvaluator.java:56) 
    at koala.dynamicjava.tree.ObjectFieldAccess.acceptVisitor(ObjectFieldAccess.java:92) 
    at edu.rice.cs.dynamicjava.interpreter.ExpressionEvaluator.value(ExpressionEvaluator.java:38) 
    at edu.rice.cs.dynamicjava.interpreter.ExpressionEvaluator.value(ExpressionEvaluator.java:37) 
    at edu.rice.cs.dynamicjava.interpreter.StatementEvaluator.visit(StatementEvaluator.java:106) 
    at edu.rice.cs.dynamicjava.interpreter.StatementEvaluator.visit(StatementEvaluator.java:29) 
    at koala.dynamicjava.tree.ExpressionStatement.acceptVisitor(ExpressionStatement.java:101) 
    at edu.rice.cs.dynamicjava.interpreter.StatementEvaluator.evaluateSequence(StatementEvaluator.java:66) 
    at edu.rice.cs.dynamicjava.interpreter.Interpreter.evaluate(Interpreter.java:77) 
    at edu.rice.cs.dynamicjava.interpreter.Interpreter.interpret(Interpreter.java:47) 
    at edu.rice.cs.drjava.model.repl.newjvm.InterpreterJVM.interpret(InterpreterJVM.java:246) 
    at edu.rice.cs.drjava.model.repl.newjvm.InterpreterJVM.interpret(InterpreterJVM.java:220) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source) 
    at sun.rmi.transport.Transport$1.run(Unknown Source) 
    at sun.rmi.transport.Transport$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at sun.rmi.transport.Transport.serviceCall(Unknown Source) 
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    ... 1 more 

Caused by: 
java.lang.NullPointerException 
    at java.lang.reflect.Array.getLength(Native Method) 
    at edu.rice.cs.dynamicjava.symbol.ArrayLengthField$1.value(ArrayLengthField.java:27) 
    at edu.rice.cs.dynamicjava.interpreter.ExpressionEvaluator.visit(ExpressionEvaluator.java:56) 
    at koala.dynamicjava.tree.ObjectFieldAccess.acceptVisitor(ObjectFieldAccess.java:92) 
    at edu.rice.cs.dynamicjava.interpreter.ExpressionEvaluator.value(ExpressionEvaluator.java:38) 
    at edu.rice.cs.dynamicjava.interpreter.ExpressionEvaluator.value(ExpressionEvaluator.java:37) 
    at edu.rice.cs.dynamicjava.interpreter.StatementEvaluator.visit(StatementEvaluator.java:106) 
    at edu.rice.cs.dynamicjava.interpreter.StatementEvaluator.visit(StatementEvaluator.java:29) 
    at koala.dynamicjava.tree.ExpressionStatement.acceptVisitor(ExpressionStatement.java:101) 
    at edu.rice.cs.dynamicjava.interpreter.StatementEvaluator.evaluateSequence(StatementEvaluator.java:66) 
    at edu.rice.cs.dynamicjava.interpreter.Interpreter.evaluate(Interpreter.java:77) 
    at edu.rice.cs.dynamicjava.interpreter.Interpreter.interpret(Interpreter.java:47) 
    at edu.rice.cs.drjava.model.repl.newjvm.InterpreterJVM.interpret(InterpreterJVM.java:246) 
    at edu.rice.cs.drjava.model.repl.newjvm.InterpreterJVM.interpret(InterpreterJVM.java:220) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source) 
    at sun.rmi.transport.Transport$1.run(Unknown Source) 
    at sun.rmi.transport.Transport$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at sun.rmi.transport.Transport.serviceCall(Unknown Source) 
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source) 
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

Thank You, 

我知道这是一个空数组,但我希望它能告诉我 - 即0应该出现。

+1

*“我知道这是一个空数组,..”*一个大小为0的数组不同于'null'。 –

回答

5

您没有将值分配给hooo,因此其值为null。当您尝试访问null对象的属性时,会抛出NullPointerException

取而代之,请尝试如下所示。

String fish; 
String[] hooo = {"Hello!", "Let's be friends."}; 
hooo.length; 
+0

非常感谢你,我现在明白了 - 当我们没有放入任何东西时它有'null' – Coffee

2

因为在这里,为什么提示错误你没有初始化变量hooo那。你可以这样做

String[] hooo = new String[0]; 

String[] hooo = {"hooo", "hoooo", "hoooooooooooo"}; 
0

只需通过声明一个变量不进行初始化!你需要创建一个新的数组对象并赋值给它。

相关问题