-7

考虑以下字符串:

String test= "0, 1, 3, 2, 2, 1, 1, 4, 2, 5, 1, 1, 0, 1, 241";

最大值是最后一个值,241。我如何获得15字符串中这个数字的计数,因为 241 是字符串中的第 15 个数字,并且是该行中的最大数字?

第二个例子:

String test=  "0, 1, 3, 2, 2, 1, 1, 4, 30, 5, 1, 1, 0, 1, 5";

结果应该是 9,因为 30 是最大的数字,在字符串中排在第 9 位。

4

7 回答 7

6

在下面的示例中,maxIndex变量将包含数组中最大值的索引,实际位置将是maxIndex + 1,这就是您要查找的。

String test = "0, 1, 3, 2, 2, 1, 1, 4, 2, 5, 1, 1, 0, 1, 241";
String[] testArray = test.split(", ");

int max = Integer.MIN_VALUE, maxIndex = 0;

for (int i = 0; i < testArray.length; i++) {
     if (Integer.parseInt(testArray[i]) > max) {
         max = Integer.parseInt(testArray[i]);
         maxIndex = i;
     }
}

编辑:初始化其他变量,并由于注释更正了一些代码

于 2013-05-20T13:10:08.990 回答
5

用它拆分字符串String.split(",");将返回一个数组。在该数组中查找最大值

于 2013-05-20T13:06:28.113 回答
0

你应该用 分割这个字符串,,然后在数组中找到最大的那个。您将获得可用于在给定字符串中查找的最大数字字符串。

于 2013-05-20T13:07:19.657 回答
0

尝试将您的字符串拆分为这样的数组,然后从该数组中找到最大的数字位置

    String[] YourArray=this.split(",");

    int largest = YourArray[0];
int largestpos;

      for(i = 0; i < YourArray.length; i++){

       if(Integer.parseint(YourArray[i]) > largest){
       largest = YourArray[i];
       largestpos=i;// This is what you need
    }
}
于 2013-05-20T13:07:20.407 回答
0

1)您拆分字符串并将其放入一个数组(int 类型) 2)然后您可以使用 JAVA API 提供的任何类型的排序。3)你会找到你想要的输出。

于 2013-05-20T13:07:52.933 回答
0

又快又丑:

String initialString = "0, 1, 3, 2, 2, 1, 1, 4, 2, 5, 1, 1, 0, 1, 241";
        String[] sArray = initialString.split(", ");
        List<Integer> iList = new ArrayList<Integer>();
        for (String s: sArray) {
            iList.add(Integer.parseInt(s));
        }
        Collections.sort(iList);
        // finding last item's value
        System.out.println(iList.get(iList.size() - 1));
        // now finding index
        System.out.println(iList.indexOf(Integer.parseInt("241")));

输出:

241
14

第二个输出为您提供已解析的最大 Integer 的索引。NumberFormatException注意:为简单起见,此处不检查。

更好的解决方案:

仍然使用String.splitand a List,但实现你自己的Comparator.

于 2013-05-20T13:14:28.403 回答
0
int max = Integer.MIN_VALUE, pos=0, i=0;
for (String s : test.split(",")) {
    if (Integer.parseInt(s) > max) { max = Integer.parseInt(s); pos = i; }
    ++i;
}
System.out.println("Position of max value is: " + (pos+1));
于 2013-05-20T13:14:58.557 回答