Preciso de Ajuda.. Aprender cod/java

/*[MUITO OBRIGADO] Estou aprendendo java. E gostaria de algumas dicas…
Antes eu pedi ajuda aqui… e me deram uma grande força… eu tenho muito problema com a lógica ainda…
Mais tenho muita vontade de aprender… Obrigado …

[PEÇO AGORA]… tenho um exercicio que eu tentei fazer… mais acho q a logica esta meio errada…
se puderem me ajudar muito obrigadohh!! :grin:

[EXERCICIO] Escreva um programa que retorne a moda (valor mais freqüente) de um
array de inteiros.

[ O QUE EU FIZ ]

[code]package listaDeExerciciosRomolu;*/

public class exercicio4 {
static int x=0,y=0;
public int comparaModa(int[] vet1){
for(int i=0;i<vet1.length;i++){
for(int j=0;j<vet1.length;j++)
if (vet1[i]==vet1[j])
x=+1;
return vet1[i];
}
return 0;
}
public static void main(String[]args){
int[]array={4,6,8,6,9};
exercicio4 a = new exercicio4();
a.comparaModa(array);
System.out.println(x);
}
}[/code]

// MUITO OBRIGADO

Olá, Fábio, espero que não esteja respondendo muito tarde.
Se não me enganei, a sua função deve ler o vetor, ver qual dos valores se repete mais vezes e retornar esse valor, certo?
Primeiramente, vou apontar os erros da sua função. Ao fazer o primeiro return, você fez com que a sua função comparasse apenas o primeiro valor com o resto do vetor, ao contrário do que deveria fazer, comparar cada item com o vetor inteiro. Segundo, ele retorna quantas vezes esse item se repete, e não o item em si (não sei se isso é um erro ou não). Terceiro, após saber quantas vezes o item se repete, você deve saber se ele é o que se repete mais, o que seu código não faz. Então eu mastiguei suas dúvidas e refiz seu código. :oops:

[code] public int comparaModa(int[] vet1){
int maiorFrequencia = -1, itemMaisFrequente=-1;
int atual=0;
for(int i=0;i<vet1.length;i++)
{
for(int j=0;j<vet1.length;j++)
{
if (vet1[i]==vet1[j])
atual++;
}
if (maiorFrequencia < atual) {
itemMaisFrequente = i;
maiorFrequencia = atual;
}
atual=0;
}

	return itemMaisFrequente;
}[/code]

Então, como você pode ver, o primeiro for pega o primeiro item, compara com todos os valores (incluindo ele mesmo), e se encontrar algum igual, ele incrementa atual, que é a quantidade de vezes que ele se repete. Após testar com todos, ele testa se essa frequência foi maior que a anterior, e se for, ele seta o índice do item atual para itemMaisFrequente (poderia ser o valor direto também) e a frequência para maiorFrequencia. Depois, ele seta atual para zero novamente e passa a uma nova interação.
Ao final dos for’s, você terá o itemMaisFrequente e a maiorFrequencia, com que ele se repete. Retornei o itemMaisFrequente em vez de usar static x como você fez, isso cabe a você. Dessa maneira, você deve modificar o main:

public static void main(String[]args){ int[]array={4,6,8,6,9}; Exercicio4 a = new Exercicio4(); int itemMaisFrequente = a.comparaModa(array); System.out.println("O valor mais frequente é: "+array[itemMaisFrequente]); }
Um problema desse código é que ele pega o primeiro valor mais frequente, e caso encontre outro com a mesma frequência, ele simplesmente ignora. Mas isso deixa o código um pouco mais complicado e não sei se você precisa disso.

Me avisa se funcionar =)

[]'s

//TheMadJava

Na realidade acho que você precisa quardar a frequência de cada numero em um array auxiliar, e depois ver qual é o maior valor do array. Tenho o codigo funcionando aqui, mas é melhor você tentar fazer, qualquer coisa é só perguntar.