Написание кода, который сдвигает элементы массива влево на 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;
}
Любая быстрая помощь была бы замечательной.




Вы были близки, но ваш аргумент 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]
Вы не используете
n. Вместо этого вы жестко запрограммировали1.