Java,按字母顺序排序字符串,不带数组

时间:2011-10-11 03:59:32

标签: java sorting collections

所以我还有另外一个任务要做,任务是使用compareTo方法按字母顺序分配3个字符串。基本上程序从测试器类接收3个字符串(a,b和c),它应该返回“getMin”,“getMiddle”和“getMax”。

我想出了getmin和max,看起来很简单但是我遇到了getMiddle的问题。 这就是我对min和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;

同样对于get max只是略有不同。我该如何创建getMiddle。我们也不允许使用数组,因为我们尚未“学习”它们。而且教授说中间的代码应该在5-6行左右。

由于

6 个答案:

答案 0 :(得分:6)

乘以compareTo方法的值。 如果值为middle,则compareTo方法的结果具有不同的符号。 乘法结果为零或有负号。

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

答案 1 :(得分:1)

 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;

答案 2 :(得分:1)

按照自己的方式行事,它看起来像这样:

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

嗯,这是它背后的一般要点。你可以把它们中的一些组合起来用于更少的线,但我会把它留给你。

答案 3 :(得分:1)

为什么这么复杂?只需使用TreeSet ,它在内部使用compareTo()。)。

答案 4 :(得分:0)

这给了mid ..还没有测试过它...而且,对于行预测的数量,我不确定我遇到的很好......反正......

    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;

答案 5 :(得分:0)

我只使用TreeSet,因为它在添加数据后对数据进行排序。