在java中使用void函数的值

在java中使用void函数的值

问题描述:

import matlabcontrol.*; 

public class HelloWorld { 

    public static void main(String[] args) 
      throws MatlabConnectionException, MatlabInvocationException { 
     // create proxy 
     MatlabProxyFactoryOptions options = 
       new MatlabProxyFactoryOptions.Builder() 
         .setUsePreviouslyControlledSession(true) 
         .build(); 
     MatlabProxyFactory factory = new MatlabProxyFactory(options); 
     MatlabProxy proxy = factory.getProxy(); 


     // call builtin function 
     proxy.eval("disp('hello world1')"); 
     proxy.eval("addpath('E:\\Karshenasi Arsha\\term 4 (payan name)\\payan name\\Matlab')"); 

     //my problem is here 
     proxy.feval("CalculatinScore", 0.4, 0.1, 0.8, 0.5); 
     proxy.eval("rmpath('E:\\Karshenasi Arsha\\term 4 (payan name)\\payan name\\Matlab')"); 


     // close connection 
     proxy.disconnect(); 
    } 
} 

在这段代码中,我试图从matlab(CalculatinScore)调用一个方法并使用结果。 但feval()是无效的,并且不返回值。 我如何使用结果?例如在C#中你可以使用这个:在java中使用void函数的值

matlab.Feval(“GetParameters”,1,out result,individual [0]/60,individual [2],individual [1]); object [] res = result as object [];

并使用void方法的结果 我可以在java中做什么?

按照javadocsMatlabProxy,有一种叫做returningFeval方法,返回在Object[] MATLAB函数调用的结果。事情是这样的:

Object[] res = proxy.returningFeval("CalculatinScore", 1, /* one result */ 
            0.4,0.1,0.8,0.5);  

根据记录,则不能使用void方法的结果,因为void方法不返回任何结果。

+0

感谢您的回答。我可以打印答案吗?例如这里答案是0.5。我试图用ToString()方法打印它,但我得到了[D @ 4fca772d – user3118071

+0

这就是告诉你,你实际得到的结果是一个'double'数组。投它,并在第一个元素。 –