2014-01-05 3 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++) 

То же самое касается петлей с переменной.

+0

Большая ошибка! Благодаря! Я пытался сравнить неинициализированные значения массива в массиве [], правильно? Просто убедитесь, что моя реализация правильная ..! :) – vipulnj

+1

Точно. Когда вы объявляете массив int, все записи инициализируются на 0. Затем вы добавляете некоторые значения в массив, но остальное все равно 0, которое вы сравниваете, что приводит к ошибочному результату. –

Смежные вопросы