读书人

新人老师出的一道题

发布时间: 2012-11-16 14:12:15 作者: rapoo

新人求助,老师出的一道题,
int[] num={1,2,3,1,1,9,5,2,3};//想要删除重复的元素
for(int i=0;i<num.length;i++){
int tem=num;
for(int j=0;j<num.length;j++){
if(tem==num[j]){
//这里想删除重复的元素,怎么写?
}
}
}


[解决办法]
集合啊学了?
[code=Java]
int[] num={1,2,3,1,1,9,5,2,3}
Set set = new HashSet()
for(int i = 0;i <num.length;i++){
set.add(num[i]);
}
Iterator it = set.iterator();
while(it.hasNext()){
System.out.print(it.next+ ", ");
}
[/code]
[解决办法]
其实没学集合可以用数组解

Java code
public class Test {    public static void main(String[] args) {        int[] num = { 1, 2, 3, 1, 1, 9, 5, 2, 3 };// 想要删除重复的元素        int[] num_tmp = new int[num.length];        int l = -1;        for (int i = 0; i < num.length; i++) {            if (find(num[i], num_tmp)) {                l++;                num_tmp[l] = num[i];            }        }        for (int i = 0; i <= l; i++) {            System.out.print(num_tmp[i]);        }    }    public static boolean find(int num, int[] num_tmp) {        int length = num_tmp.length;        for (int i = 0; i < length; i++) {            if (num_tmp[i] == num) {                return false;            }        }        return true;    }}
[解决办法]
神人,国庆我也要做学吧,把java学好
[解决办法]
借助java.util.Arrays类,写了一个,楼主参考:
Java code
import java.util.Arrays;public class TakeOutSameOne{    public static void main(String[] args)    {        int[] num={1,2,3,1,1,9,5,2,3};        //想要删除重复的元素        int[] newnum=new int[num.length];    //存放没有重复的数组。        newnum[0]=num[0];            //复制第一个元素。        Arrays.sort(num);            //排序。        int remain=0;        for(int i=1,k=0;i<num.length;i++)        {            if(num[i]!=newnum[k])        //新数组里没有,就放进去。            {                newnum[++k]=num[i];                remain=k+1;        // 记录无重复元素数。            }                                }        int[] last=Arrays.copyOf(newnum,remain);//去掉多余的元素(0)。        System.out.println(Arrays.toString(last));    //显示。    }}
[解决办法]
集合的话很好解决。
[解决办法]
你这个J应该从1开始 不是0 拿0和1做对比,没学过集合直接用数组也可以 就是第一个和第二个对比 加入相等 直接让第二个的值等于第三个 第三个的值等于第四个 这样相当于删除了 第二个
[解决办法]
探讨

其实没学集合可以用数组解

Java code


public class Test {
public static void main(String[] args) {

int[] num = { 1, 2, 3, 1, 1, 9, 5, 2, 3 };// 想要删除重复的元素
int[] num_tmp = new int[num.lengt……

[解决办法]
探讨

引用:

其实没学集合可以用数组解

Java code


public class Test {
public static void main(String[] args) {

int[] num = { 1, 2, 3, 1, 1, 9, 5, 2, 3 };// 想要删除重复的元素
int[] num_tmp = new int[num.len……

[解决办法]
Java code
Integer[] num = { 1, 2, 3, 1, 1, 9, 5, 2, 3 };TreeSet<Integer> set = new TreeSet<Integer>(Arrays.asList(num));for (Integer item : set) {    System.out.println(item);} 


[解决办法]
巩固基础知识
[解决办法]
LZ接触java没多久吧?建议楼主把帖子删掉,多想想,一来没必要,二来多锻炼一下逻辑思维
[解决办法]

探讨

其实没学集合可以用数组解

Java code


public class Test {
public static void main(String[] args) {

int[] num = { 1, 2, 3, 1, 1, 9, 5, 2, 3 };// 想要删除重复的元素
int[] num_tmp = new int[num.lengt……

[解决办法]
老师出题 不可能出超范围的 元素前移 最后一位复制成0 你试试 我现在没电脑
[解决办法]
用数组模仿set集合写了个
Java code
public class Test {    //删除重复的元素    //int[] num={1,2,3,1,1,9,5,2,3};    public static void main(String[] args){        int[] num = {1,2,3,1,1,9,5,2,3};        removeRepeatNums(num);    }        private static void removeRepeatNums(int[] arr){        //输出结果的数组        int[] resultArr = new int[arr.length];        for(int i = 0;i < resultArr.length;++i) resultArr[i] = Integer.MIN_VALUE;        for(int i = 0;i < arr.length;++i){            for(int j = 0; ;++j){                if(resultArr[j] == arr[i]) break;                if(resultArr[j] == Integer.MIN_VALUE){                    resultArr[j] = arr[i];                    break;                }            }        }        //输出        for(int i = 0;resultArr[i] != Integer.MIN_VALUE;++i){            System.out.print(resultArr[i] + " ");        }    }} 

读书人网 >J2SE开发

热点推荐