将数组复制到某个值

时间:2014-10-31 13:50:36

标签: java arrays arraycopy

我一直试图找出如何做到这一点,但无法弄明白。

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 个答案:

答案 0 :(得分:0)

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)

请注意,我没有测试它,但它应该可以正常工作

答案 1 :(得分:0)

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]);
    }

}

答案 2 :(得分:0)

这就是你需要的:

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++;
    }
}