Где в этом коде ошибка? Почему он не запускается?
Один большой массив и два маленьких
- Создать массив на 20 чисел.
- Ввести в него значения с клавиатуры.
- Создать два массива на 10 чисел каждый.
- Скопировать большой массив в два маленьких: половину чисел в первый маленький, вторую половину во второй маленький.
- Вывести второй маленький массив на экран, каждое значение выводить с новой строки.
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Solution {
public static void main(String[] args) throws Exception {
int[] big = new int[20];
int[] small = new int[10];
int[] smallTwo = new int[10];
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
for (int n = 0; n < big.length; n++) {
big[n] = Integer.parseInt(reader.readLine());
}
for (int n = 0; n < big.length / 2; n++) {
small[n] = big[n];
}
for (int n2 = 10; n2 < big.length / 2; n2++) {
smallTwo[n2] = big[n2 + big.length / 2];
}
for (int n3 = 0; n3 < small2.length; n3++) {
System.out.println(smallTwo[n3]);
}
}
}
Ответы (2 шт):
Автор решения: Aziz Umarov
→ Ссылка
Исправьте начальное значение в цикле:
for (int n2 = 0; n2 < big.length / 2; n2++) {
smallTwo[n2] = big[n2 + big.length / 2];
}
Вы начинаете отсчёт с 10, а нужно с 0.
Автор решения: Дмитрий
→ Ссылка
Все потоки ввода-вывода надо закрывать(а еще лучше использовать try with resources), копирование массивов в циклах - так себе идея, для этого есть специальные методы, которые написаны за нас, магические числа - антипаттерн, ридер можно заменить на сканер - это просто короче, пользовательский ввод может содержать ошибки и это неплохо бы предусмотреть, чтобы ваш код не валился с исключением от некорретктного ввода.
import java.util.Arrays;
import java.util.Scanner;
public class Solution {
private final static int SOURCE_ARRAY_SIZE = 20;
public static void main(String[] args) {
int[] sourceArray = new int[SOURCE_ARRAY_SIZE];
try (Scanner sc = new Scanner(System.in)) {
for (int i = 0; i < sourceArray.length; i++)
sourceArray[i] = Integer.parseInt(sc.nextLine());
}catch(NumberFormatException e){
//todo - действия в случае некорреткного пользовательского ввода
return;
}
int[] targetAray1 = new int[sourceArray.length/2];
System.arraycopy(sourceArray, 0, targetAray1, 0, targetAray1.length);
int[] targetAray2 = new int[sourceArray.length/2];
System.arraycopy(sourceArray, targetAray2.length, targetAray2, 0, targetAray2.length);
Arrays.stream(targetAray2).forEach(System.out::println);
}
}