java算法过程:要求如下 有如下二维数组:有10行 4列 a00 a01 a02 a03 a10 a11 a12 a13


//现在已知第四列的值为double型的数字,第二列、第三列为string型的字符串。 如果某两行的第二列、第三列的字符串同时相等,则将//这两行或多行的第四列的数值相加的和赋值给这两行或多行的第一列。



import  java.util.ArrayList;
import  java.util.List;
 
public  class Algorithm {
     public  static  void  main(String[] args) {
         Object[][] obj =  new  Object[ 10 ][ 4 ];
         obj[ 0 ] =  new  Object[] {  "a" "ab" "b" 10.1  };
         obj[ 1 ] =  new  Object[] {  "a" "ab" "b" 20.3  };
         obj[ 2 ] =  new  Object[] {  "a" "a" "b" 10.2  };
         obj[ 3 ] =  new  Object[] {  "a" "ab" "b" 10.1  };
         obj[ 4 ] =  new  Object[] {  "a" "af" "b" 20.2  };
         obj[ 5 ] =  new  Object[] {  "a" "ag" "b" 10.2  };
         obj[ 6 ] =  new  Object[] {  "a" "a" "b" 10.2  };
         obj[ 7 ] =  new  Object[] {  "a" "a" "b" 10.2  };
         obj[ 8 ] =  new  Object[] {  "a" "a" "b" 10.2  };
         obj[ 9 ] =  new  Object[] {  "a" "a" "b" 10.2  };
 
         List<String[]> strList =  new  ArrayList<String[]>();
         List<Integer> intList =  new  ArrayList<Integer>();
         int  count =  0 ;
 
         // 获取不重复的字符串组合
         for  ( int  j =  0 ; j <  10 ; j++) {
             count =  0 ;
             for  ( int  j2 =  0 ; j2 < strList.size(); j2++) {
                 if  (!((String) obj[j][ 1 ]).equals(strList.get(j2)[ 0 ])
                         || !((String) obj[j][ 2 ]).equals(strList.get(j2)[ 1 ])) {
                     count++;
                 }
             }
             if  (count > strList.size() -  1  || strList.size() ==  0 ) {
                 strList.add( new  String[] { (String) obj[j][ 1 ], (String) obj[j][ 2 ] });
                 count =  0 ;
             }
         }
 
         double  sum;
         System.out.println( "strList大小---"  + strList.size());
 
         for  (String[] str : strList) {
             for  (String string : str) {
                 System.out.print(string);
             }
             System.out.println();
         }
 
         for  ( int  j2 =  0 ; j2 < strList.size(); j2++) {
             for  ( int  i =  0 ; i <  10 ; i++) {
                 if  (((String) obj[i][ 1 ]).equals(strList.get(j2)[ 0 ])
                         && ((String) obj[i][ 2 ]).equals(strList.get(j2)[ 1 ])) {
                     intList.add(i);
 
                 }
                 if  (i ==  9 ) {
                     System.out.println(intList);
                     sum =  0 ;
                     for  ( int  j =  0 ; j < intList.size(); j++) {
                         sum += ( double ) obj[intList.get(j)][ 3 ];
                     }
                     for  ( int  j =  0 ; j < intList.size(); j++) {
                         obj[intList.get(j)][ 0 ] = sum;
                     }
                     intList =  new  ArrayList<Integer>();
                 }
             }
         }
 
         for  (Object obj1[] : obj) {
             for  (Object object : obj1) {
                 System.out.print(object);
             }
             System.out.println();
         }
 
     }
 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值