某银行举行活动后,需要统计出所有获奖客户,便于颁发纪念奖品,由于营业网点众多,数据比较分散,一个客户可能在不同的网点中奖多次,请根据各个网点的中奖客户编号信息,统计出所有的中奖客户编号:网点a:1、2、7、9、11、15、34、35 网点b:2、3、4、8、12、35 网点c:5、9、15、16、20、41(提示:使用数组存储各个网点数据,统计出目标数组共有多少个元素(注意重复元素只算作一个),再把不重复的数据存入目标数组。
注:本人刚学JAVA,刚学到循环、数组其他的还没学。
注:本人刚学JAVA,刚学到循环、数组其他的还没学。
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[]
当然,目标数组会多出几个为0的元素。再用if打印不为零的数组~
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;
自己将我上面代码的list再组装回数组不就可以了更本不会有多余数据
但是我们刚学数组,没学import java.util.ArrayList;
import java.util.Collections;
import java.util.List;所以不能用。。
问题是我不知道 怎么将两个网点的数据做比较,将不重复的数据放入目标数组。。我们只学了IF 和循环。还有基本的数据类型
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]);
}
}
}
前提是数组有序
当然还可以优化,最重要的还是数组怎么用