java程序,删除数组中重复元素的问题。

大家看看我的程序哪里有问题,为什么运行之后,输入10个数之后就出错了呢?
package printDifferentNumbers;
import java.util.*;
public class printDifferentNumbers {

public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input=new Scanner(System.in);
System.out.println("input ten numbers :");
int[]number=new int[10];
for(int i=0;i<number.length;i++)
{
number[i]=input.nextInt();
}
int[]number2=new int[removeRepeatedNumbers(number).length];
number2=removeRepeatedNumbers(number);
for(int i=0;i<number2.length;i++)
System.out.print(number2[i]+" ");

}
public static int[]removeRepeatedNumbers(int[]list){
int[]removeRepeatedNumbers=new int[list.length];
removeRepeatedNumbers[0]=list[0];
int h=0;
for(int i=1;i<list.length;i++)
{
for(int j=0;j<=h;j++)
{
if(list[i]!=removeRepeatedNumbers[j])
{
removeRepeatedNumbers[h+1]=list[i];
h++;
}
}
}
int[]removeRepeatedNumbers2=new int[h-1];
for(int i=0;i<h-1;i++)
{
removeRepeatedNumbers2[i]=removeRepeatedNumbers[i];
}
return removeRepeatedNumbers2;
}
}

你的 removeRepeatedNumber 的逻辑是错的 仔细考虑一下
我改写的版本
public static int[] removeRepeatedNumbers(int[] list) {
int[] removeRepeatedNumbers = new int[list.length];
int h = 0;
for (int i = 0; i < list.length; i++ ) {
boolean ok=true;
for (int j = 0; j < h; j++ ) {
if (list[i] == removeRepeatedNumbers[j]) {
ok=false;
break;
}
}
if(ok)
removeRepeatedNumbers[h++]=list[i];
}
int[] removeRepeatedNumbers2 = new int[h];
for (int i = 0; i < h; i++ ) {
removeRepeatedNumbers2[i] = removeRepeatedNumbers[i];
}
return removeRepeatedNumbers2;
}
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网