2014-12-27 180 views
0

我在找到列表中的最大項目時遇到問題!假設我有一個列表查找列表中的最大項目

List db_list=new List(); 
    db_list.add("0.5 150 A"); 

    db_list.add("0.3 120 B"); 

    db_list.add("0.1 250 C"); 
    db_list.add("0.7 100 C"); 

,我想在列表中找到的最大的項目:

double m=Double.parseDouble(db_list.getItem(0).split("\\s")[0]); 
    int Loc=0; 
    for (int i = 0; i < db_list.getItemCount(); i++) { 
     if (Double.parseDouble(db_list.getItem(i).split("\\s")[0])>m) { 
      Loc+=1; 
      m=Double.parseDouble(db_list.getItem(i).split("\\s")[0]); 

     } 
    } 

    System.out.println("The Maximum is: "+db_list.getItem(Loc)); 

,使最大的項目應該是「0.7 100 C」! 這個邏輯有什麼問題可以有人弄清我的錯誤我感到困惑的最後幾個小時謝謝

+0

使用「比較器」代替 – Abhishek 2014-12-27 14:07:19

+0

將'Loc + = 1'放在'if語句中 – Charlie 2014-12-27 14:10:21

+0

什麼是'List'?你有沒有寫過自己的名爲'List'的類? – 2014-12-27 14:14:05

回答

6

我假設你想要的位置最大的變量,而不是多少次,你發現一個更大的價值。

Loc = i; 

這是使用調試器可以在幾分鐘內找到問題的地方。

爲了您的興趣,本文將如何撰寫。

static double firstValue(String s) { 
    return Double.parseDouble(s.split("\\s", 2)[0]); 
} 

double max = firstValue(db_list.getItem(0)); 
int loc = 0; 
for (int i = 1; i < db_list.getItemCount(); i++) { 
    double next = firstValue(db_list.getItem(i)); 
    if (next > max) { 
     loc = i; 
     max = next; 
    } 
} 

System.out.println("The Maximum is: " + max + " at " + loc); 

我也建議你使用ArrayList標準List類的未來。

+1

我想你的意思是'double next = firstValue(db_list.getItem(i));' – 2014-12-27 14:17:57

+0

我的錯誤感謝您的錯誤mistakce – 2014-12-27 15:00:51