Exercicio básico na Junção de 2 arrays removendo índices iguais

Galera bom dia,

Precisava de uma ajuda pois tenho uma pequena duvida neste exercicio de arrays que estou fazendo… por ex: tenho 2 arrays {1,3,4} e {1,5,7,4} quero juntar os 2 em 1 array só, porém, eliminando e colocando um 0 no índice repetido a partir do segundo array, então deveria ficar assim o array final {1,3,4,0,5,7,0} na qual se repetem 2 índices, não estou achando um modo de como comparar o índice [0] do segundo vetor com todos do 1º vetor[i] e assim por diante.

package ExerciciosDeArrays;

public class JuncaoDeArrays {
     
    public int[] ordenaArrays(int[] a1, int[] a2) {
        
        int[] array = new int [a1.length + a2.length];
        
        for (int i = 0; i < a1.length; i++) {
            array[i] = a1[i];
        }
        
        for (int i = 0; i < a2.length; i++) {
            for (int j = 0; j < a1.length; j++) {  //Acredito que o j só ira incrementar depois que comparar com todos indices do i.         
                if(a2[i] == a1[j]) {
                    array[i+a1.length] = 0;
                } else {
                    array[i+a1.length] = a2[i];
                }
            }
         }
        
        return array;
    }
    
   //Metodo para imprimir o array
    public void imprimeArray(int [] a) {
        
        for (int i = 0; i < a.length; i++) {
            System.out.println(a[i]);
        }
    }
} 

E aqui o método main …

package ExerciciosDeArrays;


public class TestaJuncaoDeArrays {
    
    public static void main(String[] args) {
        int a1[] = {1,3,1,5};
        int a2[] = {1,9,1,4,5};
        
        JuncaoDeArrays juncao = new JuncaoDeArrays();
        
        int array[] = juncao.ordenaArrays(a1, a2);
        
        juncao.imprimeArray(array);
    }
}

for (int i = 0; i < a2.length; i++) { for (int j = 0; j < a1.length; j++) { if(a2[i] == a1[j]) { array[i+a1.length] = 0; } else { array[i+a1.length] = a2[i]; //A cada vez que ele não encontrar igual, ele vai colocar o valor no array } } }

Dá uma olhada nessa parte do seu código. O que você fez ali está quase correto, exceto pelo seu else. Só funcionaria caso a última posição do seu array estivesse repetida. Modifiquei um pouco seu código, deixando assim:

for (int j = 0; j < a1.length; j++) { if(a2[i] == a1[j]) { array[i+a1.length] = 0; break; } else if (j == a1.length-1){ //Caso seja a última comparação dele array[i+a1.length] = a2[i]; } }

E funciona =) Existem outras formas de fazer, também.

Qualquer dúvida só perguntar!

Obrigado Bianca… entendi agora qual era a comparação que estava faltando no meu raciocinio =).

beijos.