Conjunto união / Vetores

Pessoa, preciso criar um conjunto união a partir de dois vetores e não estou conseguindo. Confesso que estou com um pouco de dificuldade para transferir os elementos de um array maior para um menor.

import javax.swing.JOptionPane;

public class Exercício6 {

public static void main(String[] args) {

	int vetorA[] = new int[5];
	int vetorB[] = new int[5];
	String numeroA, numeroB;
	int valorNumeroA, valorNumeroB, soma = 0;

	for (int i = 0; i < vetorA.length; i++) {
		numeroA = JOptionPane.showInputDialog("Digite um número para acrescentar no PRIMEIRO vetor");
		valorNumeroA = Integer.parseInt(numeroA);
		vetorA[i] = valorNumeroA;
	}
	for (int i = 0; i < vetorB.length; i++) {
		numeroB = JOptionPane.showInputDialog("Digite um número para acrescentar no SEGUNDO vetor");
		valorNumeroB = Integer.parseInt(numeroB);
		vetorB[i] = valorNumeroB;
	}
	int vetorA[] = new int[soma];
	for (int i = 0; i < vetorB.length; i++) {
		for (int j = 0; j < vetorA.length; j++) {
			for (int k = 0; k < vetorC.length; k++) {
				if (vetorB[i] == vetorA[j]) {
					soma++;
					vetorC[j] = vetorB[i];
				}
			}
			
		}

	}
	for (int i = 0; i < vetorC.length; i++) {
		System.out.println(vetorC[i]);
	}
}

}

Sem o enunciado, fica complicado entender o que você precisa e o que fez.
Enfim, vamos lá.

Esta linha:

Mata o que você tinha armazenaod no vetorA. Creio que seria necessário um t erceiro vetor nesse ponto.
Segundo, soma, neste ponto do código, está com valor 0. Você declara e não altera seu valor, logo, tem um vetor com 0 posições.
Então, você tem 3 fors (eu não entendo por que tudo isso)
E, no terceiro, aparece um

De onde raios saiu o vetorC?

Na verdade o “int vetorA[] = new int[soma];” é “int vetorC[] = new int[soma];”. Errei ao corrigir umas coisas antes de colocar aqui. Mas mesmo assim o código não funciona.

O enunciado é esse: “Escreva um programa que permita o usuário informar dados para dois arrays de inteiros de 5 posições cada um e apresente o conjunto união dos arrays em um terceiro array.
Conjunto união são todos os elementos que existem em ambos os arrays e não se repetem.”

Ah, e não procuro a resposta exata, mas sim uma luz de qual caminho seguir. =)

Bom, veja, o máximo de elementos que podem existir em um conjunto união é o número de elementos do menor vetor (conjunto).
Como ambos possuirão 5 elementos, eu criaria o vetorC com 5 posições, também.

int vetorC[] = new int[5].

Para efetuar as comparações, eu faria apenas 2 laços for.

Então, Darlan, eu tenho dificuldade justamente nisso: se o conjunto união tem menos elementos do que os vetores de origem, o que fazer com o espaço que sobre nesse novo conjunto(vetor)?

Estou no trabalho e não tenho acesso ao Eclipse aqui. Mas chegando em casa vou tentar seguindo essa sua dica e volto aqui. =)

na hora de exibir, verifica se há valor nas “casas”

Então, funciona parcialmente. Porque nas outras posições do array que não possuem um elemento, ele atribui o elemento “0”.

Se eu atribuir vetorA = 1,2,3,4,5 e vetorB = 4,5,6,7,8, ele vai me devolver vetorC = 0,0,0,4,5

Até posso colocar um “If” pra impedir que os zeros apareçam…mas aí fica meio forçado haha

import javax.swing.JOptionPane;

public class Exercício6 {

public static void main(String[] args) {

	int vetorA[] = new int[5];
	int vetorB[] = new int[5];
	int vetorC[] = new int[5];

	String numeroA, numeroB;
	int valorNumeroA, valorNumeroB;

	for (int i = 0; i < vetorA.length; i++) {

		numeroA = JOptionPane.showInputDialog("Digite um número para acrescentar no PRIMEIRO vetor");
		valorNumeroA = Integer.parseInt(numeroA);
		vetorA[i] = valorNumeroA;

	}

	for (int i = 0; i < vetorB.length; i++) {

		numeroB = JOptionPane.showInputDialog("Digite um número para acrescentar no SEGUNDO vetor");
		valorNumeroB = Integer.parseInt(numeroB);
		vetorB[i] = valorNumeroB;
	}

	for (int i = 0; i < vetorB.length; i++) {
		for (int j = 0; j < vetorA.length; j++) {
				if (vetorB[i] == vetorA[j]) {
					vetorC[j] = vetorB[i];
					

				}
			
			
		}

	}
	for (int i = 0; i < vetorC.length; i++) {
		System.out.println(vetorC[i]);
	}

}

}

Qual a sua solução para não ser "meio forçado’?

Desculpa, Darlan, não quis dizer que sua solução era forçada. Mas é que eu realmente achava que havia uma maneria de, por exemplo, escolher elementos de um vetor maior e colocar em um vetor menor.

E tem. Desde que você saiba qual o total de elementos que irão compor o vetor menor.
Lembre-se, o vetor é uma estrutura de tamanho limitado. Além disso, você não sabe quantos elementos estão repetidos, por isso, é necessário considerar o pior caso.
Salvo se você quiser implementar uma funcionalidade que, antes de gerar o tal vetor, contabilize os elementos repetidos.