Копирование массива по определенному значению

Я пытался выяснить, как сделать это некоторое время, но не могу понять это.

public static void main(String[] args) {
    int value [] = new int [20];
    int value2 [] = new int [20];
    Random randomNumbers = new Random();

    for (int i = 0; i <20; i++)
    {
        value[i] = randomNumbers.nextInt(201);
    }
    Arrays.sort(value);
    for (int i = 0; i <20; i++) {
        System.out.println(value[i]);
    }

}

Как я могу скопировать все значения от 30 до value2, когда все значения являются случайными?

Буду признателен за любую помощь, которую я могу получить.

3 ответа

Решение

Вот что вам нужно:

int value[] = new int[20];
int value2[] = new int[20];
Random randomNumbers = new Random();

for (int j = 0; j < 20; j++) {
    value[j] = randomNumbers.nextInt(201);
}
Arrays.sort(value);
int k = 0;
for (int j = 0; j < 20; j++) {
    if (value[j] > 30) {
    value2[k] = value[j];

    System.out.println(value2[k]);
    k++;
    }
}
public static void main(String[] args) {
    int value [] = new int [20];
    int value2 [] = new int [20];
    Random randomNumbers = new Random();

    for (int i = 0; i <20; i++)
    {
        value[i] = randomNumbers.nextInt(201);
    }
    Arrays.sort(value);
    for (int i = 0; i <20; i++) {
        System.out.println(value[i]);
    }
    int j=0;
    for(int i =0; i<20 ;i++){
        if(value[i]>30){
            value2[j]=value[i];
            j++;
        }
    }
    System.out.println("**********************");
    for (int i = 0; i <j; i++) {
        System.out.println(value2[i]);
    }

}
int i = 0;
for (int val: value) {
    if (val > 30) {
        value2[i] = val;
        i++;
    }
}

Если вы действительно хотите использовать arraycopy и поскольку ваш массив отсортирован:

int i;
for (i = 0; i < 20; i++) {
    if (value[i] > 30) {
        break;
    }
}
System.arraycopy(value, i, value2, 0, value.length - i)

Обратите внимание, что я не проверял, но это должно работать

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