黑马程序员技术交流社区

标题: 基础问题—数组去重的实现 [打印本页]

作者: 熵增    时间: 2018-10-9 15:01
标题: 基础问题—数组去重的实现
本帖最后由 熵增 于 2018-10-9 15:05 编辑

day05 课后习题的第十题“数组去重”的主要思想是需要将循环与判断语句结合使用。
技术路线在图片中,代码如下。
public class Text10_1 {
public static void main(String[] args) {
   int [] num={9,10,6,6,1,9,0,3,5,6,4,4,100,10,110};
   System.out.println("原数组:");
   System.out.print("[");
   for(int i=0;i<num.length;i++)
      {
      if(i<num.length-1)
         {
            System.out.print(num+",");
         }else System.out.println(num+"]");
      }
   //建立新的中间数组mid[num.length],记录num[]中出现重复的值的位置。
   int [] mid=new int[num.length];
   for(int i=0;i<num.length-1;i++)
      {
      for(int j=i+1;j<num.length;j++)
      if(num==num[j])            //在num[]数组中,如果下标i位置处的值和下标j处的值相同,
         {                         // 则在mid[j]处计作1,这样在mid[]数组中值为1的元素的下标就是num[]出现重复值的下标
            mid[j]=1;
         }
      }
   //建立新数组newNum[lengthNum],将num[]中不重复的值赋给它midTwo[]。
   int lengthNum=0;
   for(int i=0;i<num.length;i++)
      {
         if(mid==0){++lengthNum;}    //确定lengthNum的数值即新数组newNum[]的长度
      }
   
   int [] newNum=new int[lengthNum];
   for(int j=0,i=0;i<num.length;i++)  //通过mid[]的重复值位置信息,将num[]剔除重复值赋值给newNum[]
      {
         if(mid!=1)
         {
         newNum [j]=num;
         j++;
         }
      }
   System.out.println("跳过重复值打印:");
   for(int i=0;i<num.length;i++)
      {
      if(mid!=1)System.out.print(num+" "); //跳过num[]中的重复值打印
      }
   System.out.println();
   System.out.println("=========================================");
   System.out.println("剔除重复值后的新数组:");
   System.out.print("[");
   for(int i=0;i<lengthNum;i++)
      {
         if(i<lengthNum-1)
         {
            System.out.print(newNum+",");  //打印剔除重复值后的newnum[]数组
         }else System.out.println(newNum+"]");
      }
   
}
}

绘图1.jpg (377.38 KB, 下载次数: 0)

绘图1.jpg





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2