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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. // 数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}
  2. public class Test18 {
  3.         public static void main(String[] args) {
  4.                 int[] arr = { 4, 2, 4, 6, 1, 2, 4, 7, 8 };
  5.                 show(arr);
  6.         }

  7.         private static void show(int[] arr) {
  8.                 StringBuilder sb = new StringBuilder();
  9.                 // 将数组添加到sb对象中;
  10.                 for (int i : arr) {
  11.                         sb.append(i);
  12.                 }
  13.                 // 输出sb为424612478
  14.                 System.out.println(sb);
  15.                 int i = sb.length() - 2;
  16.                 int count = sb.length() - 1;
  17.                 // 循环判断去重复
  18.                 while (i >= 0) {
  19.                         while (count > i) {
  20.                                 if (arr[i] == arr[count])
  21.                                         sb.deleteCharAt(count);
  22.                                 count--;
  23.                         }
  24.                         i--;
  25.                         count = sb.length() - 1;
  26.                 }
  27.                 // 为什么输出42617 而不是426178
  28.                 System.out.println(sb);
  29.         }
  30. }
复制代码


2 个回复

倒序浏览
这是我的想法,交流一下。
import java.util.*;
class Test5
{
        public static void main(String[] args)
        {
                arrDelete();
        }
        public static void arrDelete()
        {
                int[] arr = new int[]{4,2,4,6,1,2,4,7,8};
                //定义一个集合。
                LinkedList<Integer> lis = new LinkedList<Integer>();
                lis.add(arr[0]);
                //遍历数组,将不同数组元素存入List集合。
                for(int x=1;x<arr.length;x++)
                {
                        if(lis.contains(arr[x]))
                                continue;
                        else
                                lis.add(arr[x]);               
                }
                //将集合转为数组。
                Integer[] arr1 = lis.toArray(new Integer[lis.size()]);
                //打印数组。
                System.out.print("{");
                for(int y=0;y<arr1.length-1;y++)
                        System.out.print(arr1[y]+",");
                System.out.print(arr1[arr1.length-1]+"}");
        }
}
回复 使用道具 举报
我这有个不好点:把数组定义到方法里去了。
public static void main(String[] args)
        {        
                int[] arr = new int[]{4,2,4,6,1,2,4,7,8};
                arrDelete(arr);
        }
        public static void arrDelete(int[]  arr)
        {
              
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马