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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© kunwenli 中级黑马   /  2016-5-28 21:56  /  358 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. import java.util.Arrays;
  2. /**
  3. * 2.分析以下需求,并用代码实现:
  4. *        (1)定义一个int类型的一维数组,内容为{6,2,9,6,1,2,6,7,8}
  5. *        (2)去除上面定义的数组中的重复元素,打印最终结果{6, 2, 9, 1, 7, 8}
  6. * @author JX
  7. *
  8. */
  9. public class Test02 {
  10.         public static void main(String[] args) {
  11.                 int[] arr = {6,2,9,6,1,2,6,7,8};
  12.                 arr = getSingleArr(arr);
  13.                 System.out.println(Arrays.toString(arr));
  14.                
  15.                 System.out.println("==============");
  16.                 int[] arr2 = new int[]{6,2,9,6,1,2,6,7,8};
  17.                 System.out.println(printArr(arr2));
  18.         }
  19.         //数组去重的方法
  20.         public static int[] getSingleArr(int[] arr) {
  21.                 //index表示既能表示当前存入数据在新数组中的位置,又能表示存数新数组中的数据的个数
  22.                 int index = 0;
  23.                 //1.定义一个和老数组长度相同的数组
  24.                 int[] newArr = new int[arr.length];
  25.                 //2.遍历老数组的内容
  26.                 for(int i = 0;i<arr.length;i++) {
  27.                         //3.定义flag标记,表示新数组中是否包含当前遍历到的老数组内容
  28.                         boolean flag = false;
  29.                         //4.遍历新数组,查看是否包含老数组中的当前元素,如果不包含,flag置为true
  30.                         for (int j = 0;j<newArr.length;j++) {
  31.                                 if (arr[i] == newArr[j]) {
  32.                                         flag = true;
  33.                                         break;
  34.                                 }
  35.                         }
  36.                         //5.flag为false时说明新数组中不包含当前遍历的老数组的内容,并将当前遍历的老数组的元素存入新数组中
  37.                         if (!flag) {
  38.                                 newArr[index++] = arr[i];
  39.                         }
  40.                 }
  41.                 //return Arrays.copyOf(newArr, index);
  42.                 //6.去除新数组中的无效的元素
  43.                 //7.定义一个需要返回给调用者的数组returnArr,该数组的长度为index
  44.                 int[] returnArr = new int[index];
  45.                 //8.将新数组中的index个元素存入returnArr数组中,并将该数组返回
  46.                 for(int i=0;i<index;i++) {
  47.                         returnArr[i] = newArr[i];
  48.                 }
  49.                 return returnArr;
  50.         }
  51.         //自定义打印数组的方法prinArr,格式{6, 2, 9, 1, 7, 8}
  52.         public static String printArr(int[] arr) {
  53.                 //1.如果arr==null,直接返回"null"
  54.                 if(null == arr) {
  55.                         return "null";
  56.                 }
  57.                 //2.如果数组的长度为0,直接返回"[]"
  58.                 int maxLength = arr.length-1;
  59.                 String s = "";
  60.                 if(-1==maxLength) {
  61.                         return "[]";
  62.                 }
  63.                 //3.遍历数组元素将数组封装成"[6, 2, 9, 1, 7, 8]"格式
  64.                 s+="{";               
  65.                 for(int index = 0;;index++ ) {
  66.                         s+=arr[index];
  67.                         if(index==maxLength)
  68.                                 return s+"}";
  69.                         s+=", ";
  70.                 }
  71.         }
  72. }
复制代码


1 个回复

倒序浏览
顶贴是一种美德
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马