Qtd de numeros em um vetor

8 respostas
A

Minha dúvida não é nem tanto em java, mas sim em lógica. Tem um calculo que gera um valor. Esse calculo é executado 1000 vezes. A cada vez que ele é executado, o resultado é guardado em um vetor. O que preciso fazer é contar quantas vezes cada valor aparece e depois mostrar esse resultado.

8 Respostas

neoramon

Acho q o melhor seria ter mais um campo no seu vertor tipo “contador”, antes de colocar o valor deve percorrer o vetor, e se jativer o valor so somar mais um no campo “contador”. :slight_smile:

T

Você quer fazer um histograma, ou uma análise de freqüência? A maneira mais boba é usar um TreeMap. Por exemplo:

public static Map<Integer, Integer> calcularFrequencia (List<Integer> valores) {
    Map<Integer,Integer> freq = new TreeMap<Integer,Integer>();
    for (Integer valor: valores) {
        if (freq.containsValue (valor)) {
            freq.put (valor, freq.get (valor) + 1);
        } else { 
            freq.put (valor, 1);
        }
    }
    return freq;
}

...

public static void main(String[] args) {
    List<Integer> valores = new ArrayList<Integer>();
    valores.add (3); valores.add (1); valores.add (4); valores.add (1); valores.add (5);
    valores.add (9); valores.add (2); valores.add (6); valores.add (5); valores.add (3);
    valores.add (5); valores.add (8); valores.add (9);
    Map<Integer,Integer> freq = calcularFrequencia (valores);
    System.out.println (freq);
}
S

so por ser coritiano vou dar umas dicas, mas nada demais

procure por hashtable, key, find…

at+

P

há um tempo atras teve alguem com A MESMA DÚVIDA q essa ai…

use a busca do GUJ…
flw

A

È para fazer um histograma mesmo. Vou pesquisar o que o pardal_nb falou!!

T

Para fazer análise de freqüência (ou seja, contar quantas vezes o número 1 aparece), pode usar o código que postei acima.
Para fazer um histograma, é necessário criar um outro array, porque você só vai contar os intervalos.
Por exemplo, digamos que você tenha números entre 0.0 e 100.0 e precise fazer um histograma com o intervalo = 10.0.
Então você precisa criar um array de 100.0 / 10.0 + 1 posições (ou seja, 11 posições), percorrer o vetor, e então fazer uma conta do tipo:

for (int i =0; i < quantidade de resultados; ++i) {
    int n = (int) Math.floor (resultado [i]  / intervalo);
    histograma [n] ++;
}
A

Valeu!!

A

Consegui uma maneira bem simples de fazer:

import java.util.ArrayList;   
import java.util.List;   
  
public class Teste   
{   
  public static void main(String args[])   
  {   	  int igual;
  	  int A[] = new int[10];
  	  A[0]=1;
  	  A[1]=2;
  	  A[2]=3;
  	  A[3]=2;
  	  A[4]=3;
  	  A[5]=1;
  	  A[6]=4;
  	  A[7]=4;
  	  A[8]=4;
  	  A[9]=4;
  	  int flag;
  	  for(int i=0;i<10;i++)
		{
			flag=0;
			for (int k=0;k<10;k++)
			{
				if (A[i]==A[k])
				{
					flag++;
				}
			}
		System.out.println("O numero "+A[i]+" se repetiu "+flag+" vezes");
		}
   
  }   
  
}
Criado 10 de dezembro de 2007
Ultima resposta 10 de dez. de 2007
Respostas 8
Participantes 5