бин 2D массивы в Java - PullRequest
       6

бин 2D массивы в Java

0 голосов
/ 22 февраля 2011

У меня интересная проблема.У меня есть двумерный массив, скажем, п элементов.Я хочу создать функцию, которая «связывает» элементы массива в соответствии с числом.Дано

String [][] theArray = 
            {
             {"word1", "3.5"},
             {"word2", "2.4"},
             {"word3", "1.2"},
             {"word4", "0.5"},
             {"word5", "0.2"}
            };

Если бы число «binning» было 1, то массив был бы таким же.Если бы «биннингом» было 2, то массив стал бы

newArray ={{"word1 word2", "5.9"},{"word3 word4", "1.7"},{"word5", "0.2"}}

. Обратите внимание, что первый элемент каждого подмассива является объединением первых элементов исходного массива.Вторым элементом каждого подмассива является добавление вторых элементов исходного массива.

Также, если мод числа Array.length / "binning" больше 0, количество элементов нового массивадолжно быть (theArray.length / "binning" number) +1.Последним элементом должно быть объединение остальных элементов.

Я пытался сделать что-то вроде этого

public String [][] binArray(String [][]theArray, int theBinningNumber)
{
 //here i would do some nested loops, but to be honest with you guys, all my trials were
 //far from succesful
}

Большое спасибо за вашу помощь

1 Ответ

1 голос
/ 22 февраля 2011

Пожалуйста, посмотрите на этот образец,

public static void main(String []args)
   {
   String [][] theArray = 
            {
             {"word1", "3.5"},
             {"word2", "2.4"},
             {"word3", "1.2"},
             {"word4", "0.5"},
             {"word5", "0.2"}
            };

    String newArray[][]=binArray(theArray,2);
    for(String []ar : newArray)
     {
       System.out.println(ar[0] + " " + ar[1]);
     }
   }

   public static String [][]binArray(String [][]theArray,int theBinningNumber)
   {
    //Determine the size (length) of new array
    int newSize=theArray.length/theBinningNumber;
    if(theArray.length % theBinningNumber !=0)
       {
       newSize++;
       }

     //Define new array 
     String [][]newArray=new String[newSize][];
     int theNewIndex=0;

     for(int index=0;index<theArray.length;index+=theBinningNumber)
      {
          String []ar=new String[] {"",""};  
          double value=0;
          for(int binIndex=index;
                   binIndex<(index+theBinningNumber) 
                            && binIndex<theArray.length;
                                            binIndex++)
           {
               value = value + Double.parseDouble(theArray[binIndex][1]);
               ar[0]=ar[0] + " " + theArray[binIndex][0];
               ar[1]=String.valueOf(value);
            }
          newArray[theNewIndex++]=ar;
       }
      return newArray;        
   }  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...