日期:2014-05-20  浏览次数:20701 次

消除重复数字。为什么有个0去不掉?
消除重复数字。

输入十个数字,输出经 EliminatingDuplicates 处理后的数字。 为什么后面那个0去不掉,而且 改一下程序就没有结果了?????????
哪里出错了??》求教
import java.util.Scanner;
public class EliminatingDuplicates {
  public static int x;
   
public static int[] eliDup(int[] numbers)
{
if(numbers.length==0){
System.out.println("NO Duplicates!");
return null;}
else
{
int a[]=new int[numbers.length];
int t=0;
x=0;
for(int i=0;i<numbers.length;i++)
{
for(int j=0;j<x;j++)
{
if(numbers[i]==a[j])
{
t=1;
break;
}

}
if(t==0)
{
a[x]=numbers[i];
x=x+1;
}
}

return a;
}
}
public static void main(String[] args)
{
int[] m =new int[10];
System.out.println("Please enter ten int values:");
Scanner input = new Scanner(System.in);
for(int j=0;j<=9;j++)
{
m[j]=input.nextInt();
}
for(int j=0;j<=x;j++)
{
System.out.print(" " + eliDup(m)[j]);
}
}

}



------解决方案--------------------
int a[]=new int[numbers.length];
new 分配空间后,系统给数组每个元素初值0

for(int j=0;j<=x;j++)
{
System.out.print(" " + eliDup(m)[j]);
}
一共x+1个
------解决方案--------------------
public static int x;
静态成员变量x初始化为0

上面的循环改成j<x, 因为j=x=0,所以跑不进去
------解决方案--------------------
for(int j=0;j<=x;j++)
 {
 System.out.print(" " + eliDup(m)[j]);
 }
 }
改成:
for(int j=0;j<x;j++)
 {
 System.out.print(" " + eliDup(m)[j]);
 }
 }

------解决方案--------------------
循环那有问题了
------解决方案--------------------
你把最后的循环改成这样
Java code

int[] arr = eliDup(m);
        for (int j = 0; j < x; j++) {
            System.out.print(" " + arr[j]);
        }