A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hyace 中级黑马   /  2014-3-21 23:39  /  1586 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

最近几天开始申请的步骤,之前一直用的是C/C++,Java只是基础的掌握而已,写出来的代码不一定够规范正确,所以我想发到这里请大家参详,希望能够指正,谢谢~


  1. 1 package com.itheima;
  2. 2 /**
  3. 3  * 5、 数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}
  4. 4  * @author Hyace
  5. 5  *
  6. 6  */
  7. 7 import java.util.*;
  8. 8 public class Test5 {
  9. 9     public static void main(String[] args){
  10. 10         
  11. 11         //定义两个动态数组,a作为原始数组,b为去重数组
  12. 12         ArrayList<Integer> a = new ArrayList<Integer>();
  13. 13         ArrayList<Integer> b = new ArrayList<Integer>();
  14. 14         Scanner inp = new Scanner(System.in);
  15. 15         //输入数组元素
  16. 16         while(inp.hasNext()){
  17. 17             int t = inp.nextInt();
  18. 18             //当输入为-1时表示输入结束
  19. 19             if (t == -1) break;
  20. 20             else a.add(t);
  21. 21         }
  22. 22         //去重复制入b中
  23. 23         for(Iterator it = a.iterator();it.hasNext();){
  24. 24             int nex = (int)it.next();
  25. 25             if(!b.contains(nex)) b.add(nex);            
  26. 26         }
  27. 27         //打印去重结果b
  28. 28         for(Iterator it = b.iterator();it.hasNext();){
  29. 29             System.out.print((int)it.next()+" ");
  30. 30         }
  31. 31     }
  32. 32 }
复制代码



评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

7 个回复

倒序浏览
直接用一个循环遍历数组,把数存入到hashSet集合,或TreeSet集合里,这连个集合的元素不重复,直接在把集合转换成数组就好了,简单的很

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
李东梁 发表于 2014-3-22 19:38
直接用一个循环遍历数组,把数存入到hashSet集合,或TreeSet集合里,这连个集合的元素不重复,直接在把集合 ...

哦谢谢你了,get~
回复 使用道具 举报
唔。。我做这题的时候还没学到动态数组。。你们用的方法都比我的简单。。。
回复 使用道具 举报
lwy0319 发表于 2014-3-23 00:22
唔。。我做这题的时候还没学到动态数组。。你们用的方法都比我的简单。。。 ...

我也没学。。不过我的第一题就是动态数组,所以了解了下
回复 使用道具 举报
hyace 发表于 2014-3-23 07:56
我也没学。。不过我的第一题就是动态数组,所以了解了下

我也有这题,不过我貌似考虑了更多 比如 不用客户输入-1而是按回车就可以打印出数组 比如客户不配合输入其他东西 等。。。
回复 使用道具 举报
hyace 中级黑马 2014-3-23 21:01:33
7#
罗安迪 发表于 2014-3-23 18:06
我也有这题,不过我貌似考虑了更多 比如 不用客户输入-1而是按回车就可以打印出数组 比如客户不配合输入 ...

能看下你的代码么?谢谢~
回复 使用道具 举报
hyace 发表于 2014-3-23 07:56
我也没学。。不过我的第一题就是动态数组,所以了解了下
  1. /*数组去重
  2. 例如:
  3. 原始数组是{4,2,4,6,1,2,4,7,8}
  4. 得到结果{4,2,6,1,7,8}*/
  5. public class Test7 {
  6.         public static void main(String[] args) {
  7.                 int oldA[]={4,2,4,6,1,2,4,7,8};//初始化原始数组
  8.                 int x=0;//初始化新的数组长度
  9.                 int y=0;//初始化新数组的脚标
  10.                 int m=0;
  11.                 int n=0;
  12.                         for(int i=1;i<oldA.length;i++){//嵌套循环给与数组索引编号靠后的项数相同的项赋值为0
  13.                                 for(int j=0;j<i;j++){
  14.                                         if(oldA[i]==oldA[j]){
  15.                                                 oldA[i]=0;
  16.                                         }
  17.                                         }
  18.                                 }
  19.                         for(int i=0;i<oldA.length;i++){//判断原始数组变更后的0项的个数
  20.                                 if(oldA[i]!=0){            //并从新数组长度的初值减去
  21.                                         x++;
  22.                                 }
  23.                         }
  24.                
  25.                 int newA[]=new int[x];//初始化新数组,类型,长度
  26.                 for(int i=0;i<oldA.length;i++){
  27.                         if(oldA[i]!=0){//将原始数组中的非零项加入新数组
  28.                                 newA[y]=oldA[i];
  29.                                 y++;//每被赋值一次,新数组的脚标数值+1以便下次赋值用
  30.                         }
  31.                 }
  32.                 for(int i=0;i<newA.length;i++)
  33.                         System.out.print(newA[i]+" ");//循环输出新数组
  34.                 }
  35.         }
复制代码

我那时候没用动态哈,不过为了初始化静态倒是费了不少劲,那时候写的,后来想起来少了个非0判断,懒得改了

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马