estou tendo alguns problemas com logica nesse algoritimo. talvez falta de estudo… esse codigo esta me retornando um null pointer enquanto eu itero pelas 2 arrays para descobrir se há algum item igual em ambas…
public int finder(String[] first, String[] second) {
int x = 1;
first = new String[50];
second = new String[50];
first[0] = "fish";
first[1] = "jealous";
first[2] = "fish";
second[0] = "fish";
second[1] = "lolipop";
second[2] = "fish";
for(int i = 0; i < first.length - 1; i++) {
for(int j = 0; i < second.length - 1; j++){
if(first[i].equals(second[j])){
x++;
}
}
}
return x;
}
pq vc passa o first e o second por parametro se ao entrar no metodo vc “zera” eles?
pq vc cria com tamanho 50 se só usa 3 elementos?
pra q serve o x nessa historia? pra ver qtos repetidos tem? pq se for ele teria q começar com 0 né?
onde ocorre o null? tem como colocar o método num try, catch e mostrar pra gente o printstack dele?
Também não entendi o porque dos parâmetros, mas o ideal seria trabalhar com alguma Coleção como List mas acredito que seja algum exercício e você tenha que fazer com Vetores
bom uma solução se você tiver que deixar algumas posições vazias é ao percorrer no for verificar se é null segue o codigo:
for(int i = 0; i < first.length - 1; i++) { // por acaso você não teria que verificar se tem um repetido na ultima posição
if(first[i]==null) continue;
for(int j = 0; i < second.length - 1; j++){ //digo o mesmo
if(second[j]==null) continue;
if(first[i].equals(second[j])){
x++;
}
}
}
Então cara, é que seu J inicia com o valor de I.
Com essa lógica vc chega ao resultado 3 mesmo…
Na sua lógica ele não compara a posição de first com todas as posições de second.
Ele compara a posição atual de first com as posições iguais ou maiores em second.
agora sim entendi… obrigado… é que vi como exemplo e isso. e fiz o mesmo nesse algoritimo. com a ultima mensagem, finalmente entendi os fors encadeados. obrigado;