【问题标题】:catch date object for further processing捕获日期对象以进行进一步处理
【发布时间】:2012-03-12 06:48:20
【问题描述】:

我编写了一个从 Matlab 环境调用的 java 代码。该代码返回一个 DATE 对象。我想使用此 Date 对象进行进一步处理。但是如何?

import java.io.IOException;
import org.apache.commons.net.TimeTCPClient;// third party class
import java.util.Date;
public final class TimeClient
{

public static final Date timeTCP(String host) throws IOException
{
TimeTCPClient client = new TimeTCPClient();
try 
{
// We want to timeout if a response takes longer than 4 seconds
client.setDefaultTimeout(4000);
client.connect(host);
Date t=client.getDate();
System.out.println(t);
return t;
}
finally
{
client.disconnect();
}
}


public static final void main(String[]args)
{
{
try
{
timeTCP(args[0]);
}
catch (IOException e)
{
e.printStackTrace();
System.exit(1);
}
}
}
}

这是我的 Matlab 代码,它调用了上面的 java 代码。我将它保存为 M 文件

function t = gettime()

    import java.io.IOException
    import java.util.Date
    import org.apache.commons.net.TimeTCPClient
    import MATLAB.project.*
     tc= TimeClient 
     tc.main('time-a.timefreq.bldrdoc.gov')
 end

【问题讨论】:

    标签: java matlab return reusability return-type


    【解决方案1】:

    如果我对 Matlab 代码的理解正确,您正在调用 TimeClientmain() 方法。在 Java 中,main() 方法的返回类型为 void,即它们不返回任何内容,因此您的 Matlab 代码无法获取时间值。

    另外,你从main()调用timeTCP(),它返回一个Date,但是你不对返回值做任何事情,所以即使main()可以返回它也会丢失。

    您需要调用一个返回合适值的非 void 方法(并可能将该值分配给 Matlab 中的变量)。

    更新:看起来您可以直接调用timeTCP(),而不是main(),因为timeTCP() 确实返回Date

    我对 MATLAB 不是很熟悉,所以不确定您是否需要从 gettime() 显式返回它,或者最后一条语句是否暗示了这一点。

    【讨论】:

    • @DNA 我正在解释 matlab 中的最后一行代码,因为 main 是 TCPClient 类的方法,因此我必须创建一个类对象。在该对象的帮助下,我调用它的 main 方法main方法的参数是时间服务器的地址。 matlab代码中的t变量不存储任何值,完全没用。
    • +1;但没有隐含返回值 - 最后的 MATLAB 行需要以 t= 开头
    • @shree 我很确定您没有创建 TimeClient 的实例 - 您只是在调用静态(类)方法。正如我所说,如果你想要一个返回值,调用 main() 是没有用的。
    【解决方案2】:

    作为DNA mentioned,你应该直接调用timeTCP,你可以在Java中丢弃你的main函数(就Matlab而言)。你的最后一行 MATLAB 需要是

    t = tc.timeTCP('time-a.timefreq.bldrdoc.gov')
    

    否则您的 MATLAB 函数仅显示日期(由于在行尾缺少分号),但您的变量 t 仍未设置,如果有人调用您的函数gettime 明确期望输出,例如variablename = gettime;.

    【讨论】:

    • thanx Jonas 你又来救我了。
    猜你喜欢
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 2013-06-27
    • 2021-09-12
    • 1970-01-01
    • 2020-06-30
    • 2021-08-10
    • 1970-01-01
    相关资源
    最近更新 更多