获取数组的最小和最大部分

时间:2011-12-15 03:05:58

标签: java arrays

我有一个2维的字符串数组,我想找到每13个元素的最大值。

数组是数组[String date] [String price1] [String price2]。 我想最高价格1 0-12,然​​后价格1 1-13,然后价格1 2-14等等

{1,2,3,4,5,6,7,8,9,10,9,8,11,6,5,4,3,2,1}

第一个列表13 {1,2,3,4,5,6,7,8,9,10,9,8,7}将返回10

第13个{2,3,4,5,6,7,8,9,10,9,8,7,11}的第二个清单将返回11

13 {3,4,5,6,7,8,9,10,9,8,7,11,6}的第三个清单将返回11 等

修改 抱歉这有点令人困惑,数组是一个二维数组的字符串,第一列是日期,第二列和第三列是双打。我想找到第二列的最大值和第三列的最小值。

这是我得到的:

    String str = "";

    for(int ii = 1 ; ii < array.length ; ii++){
        str = str+array[ii][2]+",";

        if(ii==13){

            str = Math.max(str.substring(0, str.lastIndexOf(',', str.lastIndexOf(',') - 1)));

            System.out.println(str);
        }
    }

2 个答案:

答案 0 :(得分:1)

这是我的解决方案(如果你正在处理整数数组)。

但是您首先要说 [String date] [String price1] [String price2]

后来你举了一个例子: 第一个列表13 {1,2,3,4,5,6,7,8,9,10,9,8,7}将返回10第二列表13 {2,3,4, 5,6,7,8,9,10,9,8,7,11}将返回11第3列表13 {3,4,5,6,7,8,9,10,9,8,7 ,11,6}将返回11等 请明确说明。

<强> CODE:

public class SO_MinMaxArrayGroups {
    public static void main(String[] args) {
        int arr[] = new int[] { 1, 2, -3, 4, 5, 6, 17, 13, 14, 14, 14, 12, 1, 2, 2, 4, 3, 4,1, 2, 3, 4, 5, 6, 12, 13, -14, 14, 14, 12, 1, 2, 2, 4, 3, 4,1,4,7 };
        for (int i = 0; i < 3; i++) {
            int max = arr[13*i];
            int min = arr[13*i];
            for (int j = i * 13; j < (i + 1) * 13; j++) {
                //System.out.println("Checking :" + arr[j]);
                if (arr[j] > max) {
                    max = arr[j];
                }
                if (arr[j] < min) {
                    min = arr[j];
                }
            }
            System.out.println("Secion :"+(i+1)+"  Max : " + max + " Min : " + min);
        }
    }
}

<强>结果:

Secion :1  Max : 17 Min : -3
Secion :2  Max : 13 Min : 1
Secion :3  Max : 14 Min : -14

答案 1 :(得分:0)

如果你正在处理数字,那么数组不应该存储字符串(比较在1,11和2之间变得棘手('2'&gt; '11'): - )

你可以copy ranges进入另一个数组并从范围中创建一个树集,可以用来提取最小和最大数字。

HTH!