2011-10-11 167 views
1

因此,我有另一项任务要做,并且任务是按照字母顺序使用compareTo方法分配3个字符串。基本上,程序从测试程序类接收3个字符串(a,b和c),它应该返回“getMin”,“getMiddle”和“getMax”。Java,按字母顺序排序字符串,不带数组

我想出了getmin和max,看起来很简单,但即时通讯getMiddle问题。 这就是我对最小值和最大值:

 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; 

同样地,对于获得最大的仅略有不同。我如何去创建getMiddle。我们也不允许使用数组,因为我们“还没有学过”它们。教授说中间代码应该在5-6行左右。

由于

compareTo方法的
+0

为什么被标记为“面试问题”? –

回答

6

乘法返回值。 如果值为中,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; 
} 
+0

啊非常感谢你,这实际上相当辉煌,我没有想到这么远:) – Cody

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; 
+0

啊,但它并不那么简单,我试过,除非如果 'if(a.compareTo(c)<= 0 && a.compareTo(b)> = 0)middle = a;' 这也是一种可能性,相同对于其他2个变量:( – Cody

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 

嗯,这是它背后的一般要点。你可以将其中的一些结合在一起以减少行数,但是我会把它留给你。

+0

嗯我知道,这就是我开始做的,但它结束了推荐的代码行。我认为,象牙曲线这样做是正确的。 – Cody

0

这给mid..haven't测试也thorougly..and,作为行预测的数量,我不知道我遇到了非常好......反正...

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

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

+0

啊,但我们还没有学到它,所以我们不能真正使用它但 – Cody

0

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

+0

啊,但我们还没有学到它,所以我们不能真的使用它 – Cody