开发者

Java, sort strings alphabetically without arrays

开发者 https://www.devze.com 2023-04-12 16:13 出处:网络
So I have another assignment to do and the task is to assort 3 strings al开发者_开发技巧phabetically using the compareTo method. Basically the program receives 3 strings (a, b, and c) from a tester cl

So I have another assignment to do and the task is to assort 3 strings al开发者_开发技巧phabetically using the compareTo method. Basically the program receives 3 strings (a, b, and c) from a tester class and its supposed to return back the "getMin", "getMiddle", and "getMax".

I figured out the getmin and max, seemed easy but im having problems with the getMiddle. this is what i have for min and max:

        String min = "";
    if (a.compareTo(b) <= 0 && a.compareTo(c) <= 0) min = a;
    else if (b.compareTo(a) <= 0 && b.compareTo(c) <= 0) min = b;
    else if (c.compareTo(b) <= 0 && c.compareTo(a) <= 0) min = c;
    return min;

and similarly for get max only slightly different. How can I go about creating the getMiddle. Also we are not allowed to use arrays as we "haven't learned" them yet. and the prof said that the code for get middle should be around 5-6 lines.

Thanks


Multiply return values of compareTo method. If the value is middle, results of compareTo method have different signs. do multiply result is zero or has negative sign.

String getMiddle(String a,String b,String c)
{
    String middle = "";
    if (a.compareTo(b)*a.compareTo(c) <= 0) middle = a;
    else if (b.compareTo(a)*b.compareTo(c) <= 0) middle = b;
    else if (c.compareTo(b)*c.compareTo(a) <= 0) middle = c;
    return middle;
}


 String middle = "";
    if (a.compareTo(b) <= 0 && a.compareTo(c) >= 0) middle = a;
    else if (b.compareTo(a) <= 0 && b.compareTo(c) >= 0) middle = b;
    else if (c.compareTo(b) <= 0 && c.compareTo(a) >= 0) middle = c;
    return middle;


Doing it your way, it would look like this:

if      (a.compareTo(b) > 0 && a.compareTo(c) <= 0) middle = a;
else if (a.compareTo(c) > 0 && a.compareTo(b) <= 0) middle = a;
else if (b.compareTo(a) > 0 && b.compareTo(c) <= 0) middle = b;
else if (b.compareTo(c) > 0 && b.compareTo(a) <= 0) middle = b;
else middle = c;
return middle

Well, that's the general gist behind it. You could combine some of these together for fewer lines, but I'll leave that up to you.


Why so complicated ? Just use TreeSet, it uses compareTo() internally :).


this gives the mid..haven't tested it thorougly..and also, as for the number of lines prediction, i'm not sure i met it very well...anyway...

    String mid = "";
    if (a.compareTo(b) <= 0) {
        if (b.compareTo(c) <= 0) mid = b;
        else mid = c;}
    else if(a.compareTo(c) <= 0) mid = a;
    else mid = c; 
    return mid;


I will go with TreeSet only because it is sorting the data after adding to it.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号