ТЗ выполнено, но не уверен в правильтности способа
Нужно создать массив чисел от 100 до 1000, потом создать второй массив, длина которого идентична первому, проинициализировать его от в обратном порядке, в отличии от первого, т.к. 1000, 999, ... 100.
Как сделал я:
int lengthOfArray = 901;
int[] firstArray = new int[lengthOfArray];
for(int i = 0; i < firstArray.length; i++) {
firstArray[i] = i + 100;
System.out.println(firstArray[i]);
}
int[] secondArray = new int[lengthOfArray];
for (int c = secondArray.length - 1; c >= 0; c--) {
secondArray[c] = c + 100;;
}
Проблема в том, что ответ, который я нашел к уроку выглядил так:
int[] first = new int[900];
for (int i = 0; i < first.length; i++) {
first[i] = i + 100;
}
int[] second = new int[first.length];
for (int i = 0, j = first.length - 1; i < first.length; i++, j--) {
second[j] = first[i];
}
for (int i : second) {
System.out.println(i);
}
Я понимаю что можно писать разными способами, но т.к. изучаю самостоятельно по бесплатным и полунеофициально выставленным в свободный доступ видеозаписям - переживаю что не выполнил это нужным или "правильным" способом. Вопрос собственно в том - есть ли какие-то косяки в моем решении? Может нельзя принципиально делать так как я. Либо неувидел грязь в своем коде.
Ответы (1 шт):
Два цикла для инициализации массивов представляются лишними, оба можно проинициализировать в одном цикле:
final int from = 100;
final int to = 1000;
final int len = to - from + 1; // +1 если значение to включено в результат
int[] first = new int[len];
int[] second = new int[len];
for (int i = 0, k = from; i < len; i++, k++) {
first[i] = second[len - 1 - i] = k;
}
Также для инициализации массива чисел вместо циклов можно использовать метод Arrays::setAll, если для определения значений массива существует некая функция.
int[] first = new int[len];
int[] second = new int[len];
Arrays.setAll(first, i -> from + i);
Arrays.setAll(second, i -> to - i);