Перемещение элементов массива влево

Написание кода, который сдвигает элементы массива влево на int n (ввод с клавиатуры) и заменяет пробел нулями.

Бывший. int[] data = { -1, 1, 3, 7, 5} и я хочу увидеть { 3, 7, 5, 0, 0}. Предположим, у меня есть:

public static void shiftLeft( int[] data, int n )
{
    System.arraycopy( data, 1, data, 0, data.length - 1 );
    data[data.length - 1] = 0;
}

Любая быстрая помощь была бы замечательной.

Вы не используете n. Вместо этого вы жестко запрограммировали 1.

Johnny Mopp 12.11.2018 19:11
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
1
46
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы были близки, но ваш аргумент srcPos должен быть n, а аргумент length должен быть data.length - n. Затем вы можете использовать перегруженный метод Arrays#fill, который принимает индекс начала / конца, чтобы заполнить остальную часть массива 0:

public static void shiftLeft(int[] data, int n) {
    System.arraycopy(data, n, data, 0, data.length - n);
    Arrays.fill(data, data.length - n, data.length, 0);
}

Проверка этого с вашим примером ввода дает следующее:

int[] data = { -1, 1, 3, 7, 5};
shiftLeft(data, 2);
System.out.println(Arrays.toString(data));

Вывод:

[3, 7, 5, 0, 0]

Другие вопросы по теме