根据另一个数组的值重写Java数组

时间:2016-08-12 02:11:07

标签: java arrays

我一直在一个小Java项目中工作,但我无法弄清楚如何根据另一个数组上的值覆盖数组的元素。

基本上我有两个数组:repeated[] = {1,4,0,0,0,3,0,0}hand[] = {1,2,2,2,2,6,6,6}我使用repeated[]来计算数字在hand[]上显示的次数,如果它在3之间它应该用{0}覆盖hand[]中的相应元素,但是当它应该给我{1,0,0,2,2,6,0,6}时,我会继续获得此输出{1,0,0,0,0,0,0,0}。我做错了什么?

public static void main(String[] args) {
    int repeated[] = {1,4,0,0,0,3,0,0};
    int hand[] = {1,2,2,2,2,6,6,6};
    for(int z=0;z<repeated.length;z++){
        if(repeated[z]>=3 && repeated[z]<8){
            for(int f:hand){
                if(hand[f]==(z+1)){
                    hand[f]=0;
                } } } }
    for(int e:hand){
        System.out.print(e+",");
    }
    } 

1 个答案:

答案 0 :(得分:3)

首先,repeated中的值偏移1(因为Java数组从索引零开始)。接下来,您需要测试值是否为>= 3(因为6仅显示3次)。而且,您可以使用Arrays.toString(int[])来打印数组。像,

public static void main(String[] args) {
    int repeated[] = { 1, 4, 0, 0, 0, 3, 0, 0 };
    int hand[] = { 1, 2, 2, 2, 2, 6, 6, 6 };
    for (int z = 0; z < repeated.length; z++) {
        if (repeated[hand[z] - 1] >= 3) {
            hand[z] = 0;
        }
    }
    System.out.println(Arrays.toString(hand));
}

输出

[1, 0, 0, 0, 0, 0, 0, 0]