消除重复数字。
输入十个数字,输出经 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]); }