Удаление значения 0 из отсортированного массива? - PullRequest
4 голосов
/ 13 января 2011

Мне было интересно, есть ли способ удалить значение по умолчанию "0", которое я получаю при запуске следующего кода:

Scanner scan = new Scanner(System.in);

int [] x = new int[4];
for ( int i = 1; i < x.length; i++ )
{
    System.out.println( "Enter number " + i + ": ");
    x[i] = scan.nextInt();
}
Arrays.sort(x);
System.out.println(Arrays.toString(x));
}

Вывод выглядит следующим образом

[0, i[1], i[2], i[3]]

Конечно, все значения массива на самом деле являются числами, введенными в консоль.Код работает.Он успешно сортирует любые числа в правильном порядке, однако всегда есть эти неприятные 0.

Я не собираюсь удалять ВСЕ 0 (я хочу, чтобы пользователь мог ввести 0 и показать его) - -Я просто не хочу по умолчанию 0. Любые идеи?

Ответы [ 4 ]

5 голосов
/ 13 января 2011

Индексы массива в Java основаны на 0, а не на 1.Так что начинайте итерацию с 0 вместо 1, и вы должны быть хороши:

for ( int i = 0; i < x.length; i++ )
3 голосов
/ 13 января 2011

для (int i = 0 ; i

2 голосов
/ 13 января 2011

Когда вы выделяете массив размером 4, вы выделяете четыре целых числа: i [0], i [1], i [2] и i [3]. Поскольку Java довольно дружественный, он устанавливает все четыре из них в 0. Итак, вы видите на выходе [i[0],i[1],i[2],i[3]] (в отсортированном порядке). Сортировка не добавляет 0, она уже была там. Если вам нужно только 3 числа, то вам следует выделить int [3], а не int [4]. И затем, чтобы согласиться с этим, когда вы попросите номер 1, сохраните его в i [0]. Самым простым изменением для этого было бы просто изменить верхнюю строку на

 int [] x = new int[3];

и более поздняя строка

 x[i-1] = scan.nextInt();

Изменение, предложенное другими ответами, является, однако, более распространенным. У большинства программистов было бы, чтобы я пошел от 0 до 2, а затем вывел i + 1, когда общался с пользователем.

0 голосов
/ 13 января 2011

Следующий код должен работать:

Scanner scan = new Scanner(System.in);

int[] x = new int[3];
for (int i = 0; i < x.length; i++)
{
  System.out.println( "Enter number " + i + ": ");
  x[i] = scan.nextInt();
}
Arrays.sort(x);
System.out.println(Arrays.toString(x));

Проблема заключалась в том, что, как другие отмечали, ваш int должен начинаться с 0, а не с 1.

...