gpt4 book ai didi

java - matlab代码的空指针异常

转载 作者:行者123 更新时间:2023-11-30 06:18:41 25 4
gpt4 key购买 nike

我打算将我的 MATLAB 代码转换为 java。我正在关注this官方文档。但是使用 javac 编译后我无法完成第 17 步。当我从 cmd java -classpath .;"C:\Program Files\MATLAB\MATLAB Runtime\v93\toolbox\javabuilder\jar\javabuilder.jar";makesqr.jar getmagic 5 运行此命令时

我收到错误:Exception in thread "main" java.lang.NullPointerException at getmagic.main(getmagic.java:36)

我现在只是按照教程进行操作,不明白 getmagic.java 文件中发生了什么。

    import com.mathworks.toolbox.javabuilder.*;
import makesqr.*;

class getmagic
{
public static void main(String[] args)
{
MWNumericArray n = null;
Object[] result = null;
Class1 theMagic = null;

if (args.length == 0)
{
System.out.println("Error: must input a positive integer");
return;
}

try
{
n = new MWNumericArray(Double.valueOf(args[0]),
MWClassID.DOUBLE);

theMagic = new Class1();

result = theMagic.makesqr(1, n);
System.out.println(result[0]);
}
catch (Exception e)
{
System.out.println("Exception: " + e.toString());
}
finally
{
MWArray.disposeArray(n);
MWArray.disposeArray(result);
theMagic.dispose();
}
}
}

错误位于第 36 行:theMagic.dispose();

最佳答案

为什么要把 dispose 放在最后的括号里?即使在 try block 中出现异常,最后大括号内的所有内容也会被执行

因此,在您的情况下,您首先将 theMagic 设置为 null,该值仅在您的 try block 中设置,并且仅在没有发生错误时设置。这样,一旦发生错误,theMagic 就不会被设置,但您仍然尝试对 null 值调用 theMagic.dispose。

我想最简单的解决方案是将你的 dispose 调用写入 try block 内。

关于java - matlab代码的空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48639024/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com