在列表中查找最大项目

Jav*_*erd 0 java

我在查找列表中的最大项目时遇到问题!假设我有一个List

 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");
Run Code Online (Sandbox Code Playgroud)

我想找到列表中的最大项目:

    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));
Run Code Online (Sandbox Code Playgroud)

这样最大项目应为"0.7 100 C"!在这个逻辑中有什么问题可以让任何人弄清楚我的错误我在最后几个小时感到困惑谢谢

Pet*_*rey 6

我假设您想要最大变量的位置,而不是您找到更大值的次数.

Loc = i;
Run Code Online (Sandbox Code Playgroud)

这是使用调试器可以帮助您在几分钟内找到问题的地方.

为了您的兴趣,这是如何编写的.

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);
Run Code Online (Sandbox Code Playgroud)

我还建议您将来使用标准List类ArrayList.