[RESOLVIDO]Duvida sobre ArrayList e Switch

3 respostas
psicoppardo

Galera é minha primeira postagem e gostaria de tirar uma duvida nós podemos usar o objeto arrayList com switch??

Estou estudando java e resolvi modificar o exemplo do livro Deitel (Java - Como programar 6ª edicao), formulando um exemplo de gerador de números para lotomania segue o código

/*
 * Programa Gerador de números da Lotofacil
 */
package estudojava;

import java.util.ArrayList;
import java.util.Random;

/**
 *
 * @author pedro
 */
public class RollDice {
        public static void main(String args[]){
            //variavel
            int frequencia;
            int face; //armazena o valor lançado mais recentemente
            
            Random randomNumbers = new Random();
            
            
            ArrayList frequencia = new ArrayList();
            for(int i=0; i<=99;i++){
                frequencia.add(i);
            }
            
           
            //resume os resultados de 3.268.760 lancamentos de um dado
            for (int roll = 1; roll <=3268760;roll++){
                face =00 + randomNumbers.nextInt(99); //número de 00 a 99
                
                //determina o valor de lançameno de 1-6 e incrementa o contador apropriado
                switch (face)
                {
                              //Como seria feito o loop para o switch aqui
 
                }//final do switch
            }//for final
            System.out.println("Frequência dos Números:");
            
//loop para a saida frequencia
System.out.printf("1\t%d\n2\t%d\n3\t%d\n4\t%d\n5\t%d\n6\t%d\n7\t%d\n8\t%d\n9\t%d\n10\t%d\n11\t%d\n12\t%d\n13\t%d\n14\t%d\n15\t%d\n"
                    ,frequency1, frequency2,frequency3,frequency4,frequency5,frequency6,frequency7,frequency8,frequency9,frequency10,frequency11,frequency12,frequency13,frequency14,frequency15);
   
        }
}

Agradeço muito a ajuda de todos, estou gostando muito de aprender java e talvez seja muito sedo para aprender sobre o objeto ArrayList, ou Array, ou ainda Vetor, mas não queria copiar essas variáveis todas na mão penso que há uma forma mais simples para trabalhar com sequências em java.

3 Respostas

otaviojava

Hoje com o java você pode estar usando o switch com enum e inteiro no java 7 será possível também utiliza-lo com String.

int valor = 4;

    switch(valor){
      case 1:
        System.out.println("Valor é 1"); 
        break;
      case 2:
        System.out.println("Valor é 2"); 
        break;
      case 3:
        System.out.println("Valor é 3"); 
        break;
      default:
        System.out.println("Valor diferente de 1, 2 e 3"); 
        break;
    }
henriqueluz

Cara pelo que entendi tu quer mostrar a frequencia de lançamento de cada valor de 1 a 6 escolhido randomicamente.
É isso?

Se for eu fiz uma adaptação no teu código utilizando um Map, que mapeia para cada valor do dado(que no exemplo é de 0 a 5, ao inves de 1 a 6) o seu total de lançamentos e imprime a frequência depois.

Assim nem é preciso usar switch nem nada.
Um abraço

Segue o código:
public static void main(String[] args) {
        int face; //armazena o valor lançado mais recentemente  
          
        Random randomNumbers = new Random();  
          
        //Mapear para cada valor de 1 a 6 um valor de lançamento
        Map<String, Integer> frequencia = new HashMap<String, Integer>();
        for(int i=0; i<=5;i++){  
            frequencia.put(String.valueOf(i), 0);
        }  
          
        //resume os resultados de 3.268.760 lancamentos de um dado  
        for (int roll = 1; roll <= 3268760 ;roll++){  
            face = 00 + randomNumbers.nextInt(6); //número de 00 a 05  
            
           //Recupera o total de lançamentos da chave(0 a 5)
            Integer incr = frequencia.get(String.valueOf(face));
            
            //Incrementa este valor e adiciona na chave
            incr++;
            frequencia.put(String.valueOf(face), incr);
            
        }
        //Imprime as chaves com o total de lançamentos de cada uma
		System.out.println(frequencia.toString());
	}

Espero que seja isso. Qualquer dúvida pode perguntar.

psicoppardo

Obrigado A TODOS era justamente isso [RESOLVIDO]

Criado 20 de julho de 2011
Ultima resposta 22 de fev. de 2012
Respostas 3
Participantes 3