2012-09-05 67 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

只需通過聲明一個變量不進行初始化!你需要創建一個新的數組對象並賦值給它。

相關問題