我编写了以下函数将时间(以毫秒为单位)转换为格式为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)
你的代码很好.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().