2011-10-11 155 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