2016-08-12 4 views
4

Я работал в небольшом проекте Java, но не могу понять, как перезаписать элементы массива на основе значений в другом массиве.Перепишите массив Java на основе значений другого массива

В основном у меня есть два массива: repeated[] = {1,4,0,0,0,3,0,0} и hand[] = {1,2,2,2,2,6,6,6} и я использую repeated[] для подсчета количества раз на hand[] появляется число, и если он находится в пределах от 3 до 7 он должен переписать соответствующий элемент в 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

повторяется [I] содержит число раз, что + 1 происходит в руке; это намерение? –

ответ

3

Во-первых, значение в repeated компенсируется одной (потому что 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] 
+0

Спасибо вам большое! :) – agapito

Смежные вопросы