黑马程序员技术交流社区

标题: 求解 [打印本页]

作者: z47057554    时间: 2015-3-4 17:12
标题: 求解
本帖最后由 z47057554 于 2015-3-4 19:54 编辑

为什么内存溢出,求解

作者: zfgrinm    时间: 2015-3-4 19:44
你可以考虑用集合,简单易懂
  1. package com.itheima;

  2. import java.util.ArrayList;

  3. /*
  4. *  8、 数组去重复,例如: 原始数组是{4,2,4,6,1,2,4,7,8},得到结果{4,2,6,1,7,8}
  5. */
  6. public class Test8 {

  7.         public static void main(String[] args) {
  8.                 // TODO 自动生成的方法存根
  9.                
  10.                
  11.                 int [] arr={4,2,4,6,1,2,4,7,8};
  12.                
  13.                 //调用去重方法
  14.                 Object [] b=getArray(arr);
  15.                
  16.                 //打印数组元素
  17.                 for(int i=0;i<b.length;i++)
  18.                 {
  19.                         System.out.println(b[i]);
  20.                 }
  21.                
  22.                
  23.         }
  24.         //利用集合中的contains去除重复元素
  25.         public static Object [] getArray(int []arr)
  26.         {
  27.                 //定义集合
  28.                 ArrayList<Integer> list =new ArrayList<Integer>();
  29.                
  30.                 //遍历数组
  31.                 for(int i=0;i<arr.length;i++)
  32.                 {
  33.                         //集合中没有这个元素时,才添加,避免添加重复元素;这里有自动装箱.
  34.                         if(!list.contains(arr[i]))
  35.                                 list.add(arr[i]);
  36.                 }
  37.                
  38.                 //集合变数组
  39.                 return  list.toArray();       
  40.                
  41.         }

  42. }
复制代码

作者: z47057554    时间: 2015-3-4 19:52
zfgrinm 发表于 2015-3-4 19:44
你可以考虑用集合,简单易懂

看了许久自己发现了,是后置++,先传值,后自增的特点导致的,递归的参数始终是初始值导致的

start++,换成 ++start,就能正确运行了
作者: aswq444cs1    时间: 2015-3-5 15:53
加油!自己好好调吧,元宵节快乐!




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