Java 两者'==';运算符和Equals/compareTo方法不起作用

Java 两者'==';运算符和Equals/compareTo方法不起作用,java,Java,我试图接受一个数字数组,如果输入的数字是不同的或不是不同的,则输出。我检查了之前关于这方面的问题: 1) 使用“==”运算符不会给出正确的输出,即如果输入“2,3,4”作为命令行参数(输入),它仍然返回“数字不不同”。在这种情况下,程序可以编译并运行,但不能给出正确的输出 2) 使用'equals'和'compareTo'方法编译时返回一个错误,即“int不能被取消引用!”编译本身在这里不成功 我的代码如下: class DistinctNoCheck { public static v

我试图接受一个数字数组,如果输入的数字是不同的或不是不同的,则输出。我检查了之前关于这方面的问题:

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!");
    }
}
class DistinctNoCheck
{
公共静态void main(字符串[]args)
{int temp=0;
int[]a=新的int[10];

对于(int i=0;i您使用的是
a.length
,它是10。您应该在迭代数组时使用
args.length

替换

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

for(int j=0;jHint:
a.length
是10,不管您在命令行上传递了多少个参数
“2,3,4”
,因为命令行参数在args数组中只会给您一个参数,所以您应该输入
“2 3 4”
@x4rf41我认为OP的意思是
“2 3 4”
,否则它会抛出一个
NumberFormatException
(!(i==j))
应该写
i!=j
。这让我很不安。@x4rf41是的,正如邹祖所说,我的意思是“2 3 4”大错误!谢谢!我试图在[]中比较未初始化的数组值数组,对吗?只是要确保我的实现是否正确..!:)准确。当您声明一个int数组时,所有条目都初始化为0。然后您将一些值添加到数组中,但其余值仍然为0,您正在比较这些值,从而导致错误的结果。
for(int j=0;j<args.length;j++)