[RESOLVIDO] [Dúvida] Intersecção de elementos de vector

Olá.

Eu estou a tentar fazer uma aplicação modular que leia-a 2 vectores com números inteiros. Depois de os ler eu queria que um dos módulos retorna-se o vector com os elementos que pertenciam aos elementos de intersecção dos dois vectores inseridos.
Mas os vectores podem ter tamanho diferentes e eu não sei como é que faço uma leitura dos dois e comparo o seu conteúdo para adicionar no novo vector no meu método intersecção.

Deixo aqui o meu código:

[code]
import javax.swing.JOptionPane;

public class PL6ex5 {

public static void main(String[] args) {
    int N = Integer.parseInt(JOptionPane.showInputDialog("Quantos números deseja ler para o primeiro vector?"));
    int M = Integer.parseInt(JOptionPane.showInputDialog("Quantos números deseja ler para o primeiro vector?"));
    int[] v1 = new int[N];
    int[] v2 = new int[M];
    int S=0;
    int [] res = new int [S];
    JOptionPane.showMessageDialog(null, "Preenchimento do vector 1:");
    v1 = leitura(N);
    JOptionPane.showMessageDialog(null, "Preenchimento do vector 2:");
    v2 = leitura(M);
    res = interseccao(v1, v2, N);
    if(){//queria colocar a condiçao para caso o vector da intersecção não tivesse elementos mostrar esta mensage.
        //se tivesse elementos mostrava a outra.
        JOptionPane.showMessageDialog(null,"Não há intersecção entre os elementos dos dois vectores.");
    }else{
        JOptionPane.showMessageDialog(null, "Conjunto intersecção de nº entre os dois vectores: \n" + res);
    }
}

//leitura dos números
public static int[] leitura(int N) {
    int[] v = new int[N];
    for (int i = 0; i < v.length; i++) {
        v[i] = Integer.parseInt(JOptionPane.showInputDialog("Insira um nº: "));
    }
    return v;
}

public static int [] interseccao(int[] v1, int[] v2, int N) {
    int cont =0;
    int [] inter = new int [cont];
    boolean flag1 = false;
    int j = N - 1;
    while (flag1 == false) {
        for (int i = 0; i < v1.length; i++) {
            if (v1[i] == v2[j]) {
                cont++;//queria que o vector novo tivesse este tamanho
                inter[i] = v2[j];
            }
        }
        if (j == 0) {
            flag1 = true;
        }
        j--;
    }
    return inter;
}

}[/code]

Gostava que alguém me ajuda-se.
Um abraço

sua pergunta ficou meio confusa, mas vou colocar aki o que eu entendi pra vc ver se é isso:
essa intersecção q vc qer é o seguinte, vc quer pegar os numeros que estão em AMBOS os vetores e colocar em um TERCEIRO vetor???
é isso???

se for isso, minha sugestão é a seguinte:
vc ja tem dois vetores preenchidos, ai voce instancia mais 1 vetor (esse é o que vai receber a interceção dos outros dois vetores)…
ai vc faz um FOR dentro de outro FOR, pq ele pega o primeiro valor do primeiro vetor, e sai comparando com todos os valores do segundo vetor, ai dentro desse segundo FOR, voce coloca uma condição, que se forem iguais os numeros voce colocar o valor dentro desse terceiro!!!

se a ideia for essa funciona direitinho.
por exemplo:
for(int i =0; i <vetor1.length ; i++){
for(int x = 0 ; vetor2.length ;x++){
if(vetor1[i] == vetor2[x]){
vetor3[i] = vetor1[i];
}
}

}

pronto, pelo que eu entendi do que vc quer, é mais ou menos isso…
vlw

OLá Damiao…

è isso sim, mas se como é que eu sei qual é que será a capacidade do terceiro vector criado? Porque eu não sei quanto elementos serão comuns nos 2 primeiros vectores. Tendo em conta isso, onde é que eu devo referir a capacidade desse novo vector?

Obrigado.
Abraço

vc declara o 3º vetor do mesmo tamanho do MENOR dos outros dois…

pq a intercecção sera maxima, a do tamanho do menor vetor.

entendeu??

por ex: eu tenho vetor 1 de tamanho 13, e o vetor 2 de tamanho 10.

qual será a maxima intersecção??? a do menor né (o do vetor 2)…

intao, vc declara com o valor do menor vetor…
vlw

era o que eu estava a pensar.

muito obrigado damiao.

abraço

OK…

se seu problema ja está resolvido, coloa a tag [RESOLVIDO] no titulo do tópico (são regras do tópico)…

vlw