某银行举行活动后,需要统计出所有获奖客户,便于颁发纪念奖品,由于营业网点众多,数据比较分散,一个客户可能在不同的网点中奖多次,请根据各个网点的中奖客户编号信息,统计出所有的中奖客户编号:网点a:1、2、7、9、11、15、34、35 网点b:2、3、4、8、12、35  网点c:5、9、15、16、20、41(提示:使用数组存储各个网点数据,统计出目标数组共有多少个元素(注意重复元素只算作一个),再把不重复的数据存入目标数组。
注:本人刚学JAVA,刚学到循环、数组其他的还没学。

解决方案 »

  1.   

    这个提示有问题呀。结果是要把不重复的数据放入目标数组,在这个以前怎么能知道目标数组中元素的个数?网点A的直接放入,网点B的数据要和网点A的数据比较,将不重复的数据放入,网点C的数据要与网点AB的数据比较,将不重复的数据放入
      

  2.   

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    public class Test2 { /**
     * @param args
     */
    private static List rs=new ArrayList();
    public static void main(String[] args) {
    // 网点a:1、2、7、9、11、15、34、35 网点b:2、3、4、8、12、35 网点c:5、9、15、16、20、41
    int[] a={1,2,7,11,9,15,34,35};
    int[] b={2,3,4,8,12,35};
    int[] c={5,9,15,16,20,41};
     List list=new ArrayList();
     list.add(a);
     list.add(b);
     list.add(b);
     reCheck(list);
     Collections.sort(rs);
    for(int i=0;i<rs.size();i++){

    System.out.println(rs.get(i));
    } }
    private static void reCheck(List list) {

    for(int j=0;j<list.size();j++){
    int [] temp=(int[]) list.get(j);
    for(int i=0;i<temp.length;i++){
    int x=temp[i];
    if(rs.contains(x)){
    continue;
    }else{
    rs.add(x);
    }
    }
    }
    }
    }希望对你有所提示,可以视需要将int[]改换成Object[]
      

  3.   

    可以给足够大 如目标数组的长度=a,b,c,长度之和。然后比较比较将不重复的数组存入目标数组。
    当然,目标数组会多出几个为0的元素。再用if打印不为零的数组~
      

  4.   


    List list = new ArrayList();
    list.add("");
    //.......... 将所有客户添加到List

    String key = ""; //Key为客户的唯一标示
    Map<String,Object> map = new HashMap<String,Object>();//统计用Map
    for(int i = 0; i < list.size(); i ++) {//循环所有客户

    if(map.containsKey(key))
    map.put(key, "客户");//把不重复的客户添加进去
    }

    return map;
      

  5.   


    自己将我上面代码的list再组装回数组不就可以了更本不会有多余数据
      

  6.   

    谢谢!
    但是我们刚学数组,没学import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;所以不能用。。
    问题是我不知道 怎么将两个网点的数据做比较,将不重复的数据放入目标数组。。我们只学了IF 和循环。还有基本的数据类型
      

  7.   

    public class CheckRepeatNum{

    public static void main(String[] args){

    int[] a={1,2,7,9,11,15,34,35 }; //数组长度8-与b相比有2个数字重复
    int[] b={2,3,4,8,12,35}; //数组长度6
    int[] c={5,9,15,16,20,41};

    int[] result=check(a,b);
    result=check(result,c);
    printArr(result);
    }


    /**
    * 排除重复数字,输出两个数组中的所有元素
    */
    public static int[] check(int[] a,int[] b){

    int[] c=new int[a.length];//c中保存数组a中没有在数组b中出现的数字

    int repeat=0;//重复数字的个数
    int ci=0;//c的当前下标

    for(int i=0;i<a.length;i++){
    for(int j=0;j<b.length;j++){
            if(a[i]==b[j]){//两两比较,前提是两数组都有序
          repeat++;
         break;
    }else if(j==(b.length-1)){//比到头,没有重复,则保存在数组c中
             c[ci]=a[i];
    ci++;
    }
    }
    }

    int[] result=new int[a.length+b.length-repeat];

    System.arraycopy(c,0,result,0,a.length);
    //c中的数字肯定不与b重复,拷贝到同一个数组中,返回结果
    System.arraycopy(b,0,result,(a.length-repeat),b.length);

    return result;

    }

    /**
    *打印数组
    */
    public static void printArr(int[] arr){
    for(int i=0;i<arr.length;i++){
    System.out.println(arr[i]);
    }
    }
    }
    前提是数组有序
    当然还可以优化,最重要的还是数组怎么用
      

  8.   

    用set直接存入数据不就可以了吗