Numero de vezes que um número aparece em um Vetor?
7 respostas
vetorjavaarray
A
arturpbs
Então, estou fazendo um código que lê as notas de n alunos, que devem ser entre 0 e 100, e imprima quantas vezes cada nota foi repetida, porém não estou conseguindo imprimir o valor corretamente, como eu poderia fazer isso? Segue o código que eu fiz:
importjava.util.Scanner;publicclassExercicioVetor01{publicstaticvoidmain(String[]args){Scannerler=newScanner(System.in);System.out.println("Informe o número de alunos: ");intn=ler.nextInt();intcontador=1;intalunos[]=newint[n];for(inti=0;i<alunos.length;i++){System.out.println("Digite a nota do aluno "+(i+1)+": ");alunos[i]=ler.nextInt();}for(intj=0;j<=100;j++){for(inti=0;i<alunos.length;i++){if(alunos[i]==j){System.out.println("A nota "+j+" apareceu "+contador+" vezes!");contador++;}}}}}
for(intj=0;j<alunos.length;j++){for(inti=0;i<alunos.length;i++){if(alunos[j]==alunos[i]){contador++;}}System.out.println("A nota "+alunos[j]+" apareceu "+contador+" vezes!");contador=0;//lembrederesetar...}
A
arturpbs
deu isso aqui:
Informe o número de alunos:2Digite a nota do aluno 1:10Digite a nota do aluno 2:10A nota 0 apareceu 3 vezes!A nota 1 apareceu 5 vezes!Exception in thread “main” java.lang.ArrayIndexOutOfBoundsException: 2at exerciciovetor01.ExercicioVetor01.main(ExercicioVetor01.java:19)C:\Users\Artur Pereira\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1FALHA NA CONSTRUÇÃO (tempo total: 3 segundos)
L
LostSoldier
Ajustei lá, não percebi que você tinha deixado <= no primeiro for…
A
arturpbs
Agora tá dando assim:
Informe o número de alunos:
2
Digite a nota do aluno 1:
10
Digite a nota do aluno 2:
10
A nota 10 apareceu 3 vezes!
A nota 10 apareceu 2 vezes!
L
LostSoldier1 like
É… melhor você criar um outro vetor só com as notas…
intalunos[]=newint[n];intnotas[]=newnotas[101];//0-100certo?for(inti=0;i<alunos.length;i++){System.out.println("Digite a nota do aluno "+(i+1)+": ");intnota=ler.nextInt();alunos[i]=nota;notas[nota]++;}for(inti=0;i<=100;i++){System.out.println("A nota "+i+" apareceu "+notas[i]+" vezes!");}
Perceba que assim ele vai imprimir todas as notas, informando a quantidade de cada uma, se quiser imprimir apenas as notas digitadas, precisa colocar um if no segundo for…
if(notas[i]>0){System...}
G
GabrielTI
for(intj=0;j<=100;j++){while(contAlunos<alunos.length){if(alunos[contAlunos]==j){contador++;System.out.println("A nota "+j+" apareceu "+contador+" vezes!");contAlunos++;}}contAlunos=0;contador=0;
}
}
Por favor teste esse código que coloquei acima e me dê um feedback, acho que agora está certo, pois estou zerando o índice do vetor das notas a cada ciclo, qualquer dúvida só perguntar.
A
anon62916717
Observações pessoais:
a) … um código que lê as notas de n alunos, que devem ser entre 0 e 100;
Obs.: são de 0 a 100 alunos.
b) e imprima quantas vezes cada nota foi repetida.
Fim das observações.
Para fins de contagem utilizei a classe Map pois não considero interessante desenvolver uma metódologia mais complexa para contabilizar as notas repetidas, por preferir menos linhas de código.
publicstaticvoidmain(String[]args){Scannerscan=newScanner(System.in);System.out.println("Informe quantas notas serão adicionadas.\nMinimo 1, máximo 100.");floatnotas[]=newfloat[scan.nextInt()];if(notas.length>0&¬as.length<101){for(inti=0;i<notas.length;i++){System.out.println("Informe a nota do"+(i+1)+"º aluno");notas[i]=scan.nextFloat();}//para gerenciar as notas será utilizada a classe Map, pois ela não admitirá notas repetidas para fins de contagemMap<Float,Integer>contabilizarNotas=newTreeMap();//Float será a nota que servirá de chave e Integer o contadorfor(inti=0;i<notas.length;i++){contabilizarNotas.putIfAbsent(notas[i],0);//nesta instrução a nota só será adicionada se não constar na coleçãocontabilizarNotas.put(notas[i],contabilizarNotas.get(notas[i])+1);//toda vez que uma nota se repete a quantidade é atualizada }for(Floatchave:contabilizarNotas.keySet()){//percorrendo todas as notas na coleção, elas também são chaves únicasSystem.out.println("A nota: "+chave+", se repete: "+contabilizarNotas.get(chave));//notas.get(chave) imprime o total de repetições}}}