2014-01-05 29 views
1

我试图接受数字输出数组,如果输入的数字是不同的或没有。我检查了关于此的早期问题:两个“==”操作和equals/compareTo方法不工作

1)使用'=='运算符不会给我正确的输出,即如果输入“2,3,4”作为命令行参数(输入),它仍然会返回“数字不明显”。程序可以编译并在这种情况下运行,但不能提供正确的输出。

2)使用'equals'和'compareTo'方法在编译时返回错误,“int不能被解除引用!”这里的补充本身并不成功。

我的代码如下:

class DistinctNoCheck 
{ 
    public static void main(String[] args) 
    { int temp = 0; 
     int [] a = new int [10]; 
     for(int i=0;i<args.length;i++) 
     { 
      a[i] = Integer.parseInt(args[i]); 
     } 
     for(int i=0;i<a.length;i++) 
     { 
      temp = a[i]; 
      for(int j=0;j<a.length;j++) 
      { 
       if((a[j] == temp) && (!(i == j))) 
       { 
        System.out.println("Numbers are not distinct!"); 
        System.exit(0); 
       } 
      } 
     } 
     System.out.println("Numbers are distinct!"); 
    } 
} 
+10

提示:'a.length'是10,无论你有多少参数传递的命令行 – Mat

+1

上'“2,3,4”'作为命令行参数只会给你args数组中的一个参数,你应该输入' “2 3 4”' – x4rf41

+1

@ x4rf41我觉得OP意味着' “2 3 4”',否则它会抛出一个'NumberFormatException'。 –

回答

2

您正在使用a.length其是10.应该使用args.length而迭代阵列之上。

更换

for(int j=0;j<a.length;j++) 

for(int j=0;j<args.length;j++) 

也是一样的循环使用变量i。

+0

大错!谢谢!我试图比较[]数组中未初始化的数组值,对吧?只要确定我的认识是否正确。 :) – vipulnj

+1

准确。当你声明的int数组中的所有条目都被初始化为0,然后你一些值添加到阵列,但其余的仍然是0,你是比较导致错误的结果。 –