有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

matlab是另一个java。lang.ClassCastException

我在将变量(见下文)转换为字符串以便在GUI中显示时遇到问题。一些背景信息:我创建了一个Java GUI,它将运行一些Matlab代码(使用MatlabProxy),作为过程的一部分,我试图用一些关于特定数据文件(用户选择的)的有用信息(从Matlab传递回GUI)更新GUI。MatlabProxy“getMVVariable()”函数返回类型为“double”的对象(在我的例子中);然而,当我尝试使用

String text = (String) getMVariable("testInfo.freqMax");

我得到了ClassCastException:“[D不能转换为java.lang.String。”我还尝试将其转换为字符串数组(String[]),但没有成功。我读过一些关于使用数组的帖子。关于数组列表的copyOf或其他内容,但无法理解它


共 (4) 个答案

  1. # 1 楼答案

    用这段代码替换这一行可能会澄清发生了什么:

    String text = "";
    double[] allValues = getMVariable("testInfo.freqMax");
    
    for(double oneValue : allValues) {
        System.out.println("adding the characters '" + oneValue + " ' to text");
        text += oneValue;
        text += " ";
    }
    
    System.out.println("after we've read all values, text has become: '" + text + "'");
    

    如果你不熟悉这里的“for”结构,只需问:)

  2. # 2 楼答案

    [D意味着它是一个double[]。见^{}

    double[] foo = (double[]) getMVariable("testInfo.freqMax");
    

    在那之后,由你决定如何处理它

  3. # 3 楼答案

    如果你确定

    getMVariable("testInfo.freqMax")

    返回Double,那么为什么不返回user呢

    getMVariable("testInfo.freqMax").toString();

  4. # 4 楼答案

    如果类型是[D,那么您有一个double[]而不是doubleObject[]

    你需要这样的东西

    Object var = getMVariable("testInfo.freqMax");
    String text;
    if (var instanceof double[])
       text = Arrays.toString((double[]) var);
    else
       text = "" + var;