黑马程序员技术交流社区
标题:
关于数组中去掉重复元素的问题
[打印本页]
作者:
lqy1991
时间:
2016-5-24 21:49
标题:
关于数组中去掉重复元素的问题
定义一个int类型的一维数组,如:{6,2,9,6,1,2,6,7,8},去除上面定义的数组中的重复元素,打印最终结果{6, 2, 9, 1, 7, 8}
作者:
huxiaoyong888
时间:
2016-5-24 21:56
是吗,那很好啊
作者:
我有上将潘凤
时间:
2016-5-24 23:43
/*
定义一个int类型的一维数组,如:{6,2,9,6,1,2,6,7,8},
去除上面定义的数组中的重复元素,打印最终结果{6, 2, 9, 1, 7, 8}
*/
class Text1 {
public static void main(String[] args) {
int[] arr = {6,2,9,0,1,2,6,7,8,1,7,3,45,45,3,4};
int count = 0; //用来记录重复数字的次数
//外面两个循环是用arr[i]分别和它后面的数比较
m:for (int i = 0;i<arr.length;i++) {
for (int j = i+1;j<arr.length ;j++) {
//该循环用来判断当arr[i]的数字与前面的一样就不比较了,跳过
//如arr[3] = arr[0] = 6,这时候arr[3]就不用去跟后面的数比较了
for (int k = 0;k<i ;k++ ) {
if (arr[i] == arr[k]) {
continue m;
}
}
//出现相同的情况则count加一
if (arr[i] == arr[j]) {
count++;
}
}
}
//定义一个数组来接收不重复的数字,之前数组的长度减去重复的次数就是
//新数组的长度。
int[] newArr = new int[arr.length-count];
//定义一个初始索引
int index = 0;
n:for (int i = 0;i<arr.length;i++ ) {
//这个循环的意思是当arr[i]的值与数组newArr中已经
//被赋过值的元素就不要往下走了,以免重复赋值。
//如newArr[0]赋值后为6,所以当走到arr[6] = 6的时候
//就跳过,不往下执行赋值操作
for (int j = 0;j<index;j++) {
if (arr[i] == newArr[j]) {
continue n;
}
}
//这里就是为newArr数组元素赋值的地方
//每赋值一次索引加一
newArr[index] = arr[i];
index++;
}
for (int i = 0;i<newArr.length ;i++ ) {
System.out.println(newArr[i]);
}
}
}
作者:
644313561
时间:
2016-5-25 23:31
谢谢楼上大神!
作者:
chenshaohua
时间:
2016-5-26 17:50
public class Test02 { public static void main(String[] args) { int[] arr = {6,2,9,6,1,2,6,7,8}; arr = getSingleArr(arr); System.out.println(Arrays.toString(arr)); System.out.println("=============="); int[] arr2 = new int[]{6,2,9,6,1,2,6,7,8}; System.out.println(printArr(arr2)); } //数组去重的方法 public static int[] getSingleArr(int[] arr) { //index表示既能表示当前存入数据在新数组中的位置,又能表示存数新数组中的数据的个数 int index = 0; //1.定义一个和老数组长度相同的数组 int[] newArr = new int[arr.length]; //2.遍历老数组的内容 for(int i = 0;i<arr.length;i++) { //3.定义flag标记,表示新数组中是否包含当前遍历到的老数组内容 boolean flag = false; //4.遍历新数组,查看是否包含老数组中的当前元素,如果不包含,flag置为true for (int j = 0;j<newArr.length;j++) { if (arr[i] == newArr[j]) { flag = true; break; } } //5.flag为false时说明新数组中不包含当前遍历的老数组的内容,并将当前遍历的老数组的元素存入新数组中 if (!flag) { newArr[index++] = arr[i]; } } //return Arrays.copyOf(newArr, index); //6.去除新数组中的无效的元素 //7.定义一个需要返回给调用者的数组returnArr,该数组的长度为index int[] returnArr = new int[index]; //8.将新数组中的index个元素存入returnArr数组中,并将该数组返回 for(int i=0;i<index;i++) { returnArr[i] = newArr[i]; } return returnArr; } //自定义打印数组的方法prinArr,格式{6, 2, 9, 1, 7, 8} public static String printArr(int[] arr) { //1.如果arr==null,直接返回"null" if(null == arr) { return "null"; } //2.如果数组的长度为0,直接返回"[]" int maxLength = arr.length-1; String s = ""; if(-1==maxLength) { return "[]"; } //3.遍历数组元素将数组封装成"[6, 2, 9, 1, 7, 8]"格式 s+="{"; for(int index = 0;;index++ ) { s+=arr[index]; if(index==maxLength) return s+"}"; s+=", "; } } }
作者:
729524251
时间:
2016-5-27 12:37
膜拜大神
作者:
wangzifei
时间:
2016-5-27 13:04
加油!
作者:
坂田银时
时间:
2016-5-27 13:25
来学习了
作者:
小菜鸟。
时间:
2016-5-27 14:03
学习到了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2