函数在java中返回一个字符串

Mic*_*ick 5 java

我编写了以下函数将时间(以毫秒为单位)转换为格式为mins:seconds的字符串.作为一名前C程序员,我认为"ans"必须是静态的才能正常工作,但在String之前放置静态似乎是不允许的.

我的问题是 - 这个功能是否有效 - 如果没有,那么哪些改变将使其发挥作用.

public String time_to_string(long t) // time in milliseconds
{
    String ans;
    int mins,secs;
    if (t < 0)
    {
        return "-";
    }
    else
    {
        secs = (int)(t/1000);
        mins = secs/60;
        secs = secs - (mins * 60);

        ans = ""+mins+":"+String.format("%02d", secs);

        return ans;
    }
}
Run Code Online (Sandbox Code Playgroud)

NPE*_*NPE 8

你的代码很好.Strings以这种方式返回没有问题.

在Java中,a String是对不可变对象的引用.这与垃圾收集相结合,可以解决许多潜在的复杂问题:您可以简单地传递一下String,而不必担心它会破坏您,或者某个人会修改它.

如果你不介意我提出几个风格的建议,我会像这样修改代码:

public String time_to_string(long t) // time in milliseconds
{
    if (t < 0)
    {
        return "-";
    }
    else
    {
        int secs = (int)(t/1000);
        int mins = secs/60;
        secs = secs - (mins * 60);
        return String.format("%d:%02d", mins, secs);
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我已经尽可能地将变量声明推到了尽头(这是C++和Java中的首选样式).我也已经淘汰ans并替换了字符串连接和String.format()单个调用的混合String.format().