2014-12-27 109 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