Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

function to return a string in java

Tags:

java

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;
    }
}
like image 326
Mick Avatar asked Jan 25 '12 16:01

Mick


1 Answers

Your code is fine. There's no problem with returning Strings in this manner.

In Java, a String is a reference to an immutable object. This, coupled with garbage collection, takes care of much of the potential complexity: you can simply pass a String around 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:

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);
    }
}

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 ans and have replaced the mix of string concatenation and String.format() with a single call to String.format().

like image 81
NPE Avatar answered Sep 21 '22 21:09

NPE