I wrote the following function to convert a time in milliseconds to a string of the format mins:seconds. Being a former C programmer I assumed that “ans” would have to be static in order to work properly, but putting static before String appears to not be allowed.
My question is – will this function work – and if not, what change will make it work.
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;
}
}
Your code is fine. There’s no problem with returning
Stringsin this manner.In Java, a
Stringis a reference to an immutable object. This, coupled with garbage collection, takes care of much of the potential complexity: you can simply pass aStringaround without worrying that it would disapper on you, or that someone somewhere would modify it.If you don’t mind me making a couple of stylistic suggestions, I’d modify the code like so:
As you can see, I’ve pushed the variable declarations as far down as I could (this is the preferred style in C++ and Java). I’ve also eliminated
ansand have replaced the mix of string concatenation andString.format()with a single call toString.format().