Essa é a primeira vez que posto aqui, estou com uma duvida em um exercicio, se alguem puder me ajudar ficarei grato!!Segue:
Utilizando a classe Scanner faça um programa que solicite a entrada de 10
números inteiros, verifique a freqüência de ocorrência de cada número no vetor.
Preciso de um jeito que faça eu não contar o mesmo numero que já apareceu anteriormente, eu não consigo atribuir nulo ou fazer outra coisa…enfim é isso, se puderem melhorar meu codigo ou me mostrar outra forma de fazer!!!
Obrigado ViniGodoy…
Mas então no enuciado do exercicio não diz nada sobre limite,
Se eu conseguisse eliminar os numeros quando eles se repetem acho que meu codigo daria certo, mas acho que isso só com a classe Array, estou certo?!
ViniGodoy
A forma mais fácil sem especificar um limite é usando uma classe especial do Java chamada Map.
Daria para fazer um programa simples também se você já soubesse montar suas classes, mas não parece ser o caso desse exercício.
São dez apostilas muito boas e gatuitas, já li a apostila da caelum tambem a fj 11, mas queria fazer mais exercicios e encontrei ela.
Por curiosidade(pois realmente acho não ser o caso do exercicio) como faria usando uma classe de maneira simples, não precisa por o codigo completo, só da uma luz!!
Thanks…
E
eduardojandre
Cara não deu para entender muito bem o que tu quer fazer mas se foi o que eu entendi, a melhor maneira e vc criar um objeto com dois atributos numero e quantidade , e criar um lista desse objeto, de forma que a cada numero que vc encontra vc tem um metodo que ou soma 1 na quantidade caso essa elemento ja esteja na lista ou add um novo objeto na lista com o numero novo e com 1 em quantidade…
mais ou menos assim:
classNum{intnumero;intqtd;publicNum(intn){numero=n;qtd=1;}}//classe lista agoraclassListaNum{Numinfo;ListaNumprox;publicListaNum(intnumero){info=newNum(numero);prox=null;}publicListaNum(Numnum,ListaNumlista){info=numprox=lista;}}//classe principal agora...publicvoidadicionar(intnumero,ListaNumlista){Numencotrado=encotra(numero,lista);if(encontrado==null)lista=newListaNum(newNum(numero),lista);elseencontrado.qtd++;}publicNumencotra(intnumero,ListaNumlista){if(lista==null)returnnullelse{if(lista.info.numero==numero)returnlista.info;elsereturnencontra(numero,lista.prox);}}//metodo principal..{ListaNumlista;int[]entradas=...;for(inti=0;i<entradas.lenght;i++){adicionar(entradas[i],lista);}//agora chega senao vou fazer o trabalho todo...rsrs}
e basicamente isso tem q completar… se fizer um toString() no Num ou no listaNum ja facilita bastante…
V
vinids
eduardojandre, eu entendi sua sugestão, mais o código eu fiquei perdido total…principalmente a classe ListaNum, achei que vc montaria um array, e no metodo adicionar, passa como argumento um int numero (até ai sem problema), mas oq seria o argumento do tipo ListaNum lista!!
Mas mesmo assim valew, vou continuar tentando!!
E
eduardojandre
Não entendi bem sua pergunta, poderia explicar melhor?
ListaNum nao deixa de ser um array, um array e uma lista encadeada o java tem pronto arraylists ja so que ate para aprendizado aconselho que vc crie suas proprias listas o que te da mais conhecimento e um poder de customização muito melhor…
tentando explicar melhor vc tem um objeto (num) e tem uma lista desse objeto(listaNum) e vc vai lendo inteiros e caso nao exista nenhum objeto (num) representando esse inteiro vc cria um novo objeto(num) e add a lista (listaNum) caso ja existe vc incrementa a qtd do objeto(num), basicamente vc declara uma lista(listaNum) q vc vai usar para armazenar os objetos e a cada inteiro vc manda add nesse lista e essa logica se ja existe ou nao fica por conta do add… entendeu?
V
vinids
Mas como eu percorro essa lista, tipo sem o “[” e ']".
Pelo oq eu entendi quando o metodo adicionar é acionado pela primeira vez a lista será nula então vc instancia uma nova lista (linha 27), na variavel lista, mas ao fim do método eu não perderia a referencia a ela, pois a variavel lista desaparece ao final do escopo do método adicionar?!
E
eduardojandre
vc pode criar algum metodo pra percorrer ela ou atraves de uma variavel auxilar, recursivamente existe varias maneiras de fazer isso… isso e um pouco do conceito de ponteiro que em java esta encapsulado mais nao deixa de existir…de fato vc esta certo pelo a construção q fiz realmente a lista esta se perdendo , foi que fiz aqui de cabeça e rapidamente nao me liguei nisso mas e facil de resolver e so vc colocar o metodo add em vez de void retornar uma ListaNum e no final do metodo void dar um return lista, ou entao mudar a forma de construção da lista mas a primeira alternativa e mais facil e rapida…