2011-12-15 187 views
1

我有一個2維數組的字符串,我想查找每13個元素的最大值。獲取數組各部分的最小值和最大值

數組是數組[String date] [String price1] [String price2]。 我想最高的價格1 0-12,然​​後price1 1-13,然後price1 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); 
     } 
    } 
+0

請包括到目前爲止什麼都試過... – 2011-12-15 03:11:56

回答

1

這是我的解決方案(如果你正在處理整數數組)。

你說[字符串日期] [字符串價格1] [字符串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第三個列表中的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 
0

,如果你正在處理的數字,數組不應該存儲字符串(比較1,11和2(「2」> '11之間得到棘手'):-)

您可以將copy ranges轉換爲另一個數組,並在範圍外創建一個樹狀結構集,這可用於提取最小和最大數量。

HTH!

相關問題