Копирование массива по определенному значению
Я пытался выяснить, как сделать это некоторое время, но не могу понять это.
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)
Обратите внимание, что я не проверял, но это должно работать