Sortear

8 respostas
alanmartins

Pessoal, alguém sabe como eu poderia fazer para sortear Strings.

Estava vendo algo desse tipo... mas não funcionou

import java.util.ArrayList;
import java.util.Collections;

public class Jogadores {

	public static void main(String[] args) {
		

		ArrayList<String> nomes = new ArrayList<String>();
		nomes.add ("A1"); 
		nomes.add ("B1");
		nomes.add ("C1");
		nomes.add ("D1");
		
		Collections.shuffle(nomes) ;

	}
}

8 Respostas

criador

http://www.guj.com.br/posts/list/104707.java

Exatamente o que você precisa.

Abraço!

ViniGodoy

Ué, o que não funcionou?

alanmartins

Valeu!

Vou testar, pelo que vi é exatamente o que eu preciso!

criador

Funcionou com certeza.
O único problema é que você não imprimiu os novos dados para verificar se realmente sorteou =\

Abraço!

E

shuffle = embaralhar
sort = ordenar

Acho que “sortear”, para você, é escolher ao acaso, não “efetuar um sort” ou “ordenar” que é uma gíria de pessoal de TI. É isso mesmo?

Então embaralhe as strings, como você fez, e vá pegando os valores na lista até que você se dê por satisfeito.

marcosharbs

seu código funciona sim
se voçê der um toString() vai ver que os elementos do array mudarma de posição

ArrayList<String> nomes = new ArrayList<String>();  
nomes.add ("A1");   
nomes.add ("B1");  
nomes.add ("C1");  
nomes.add ("D1");  
System.out.println(nomes.toString());           
Collections.shuffle(nomes) ;
System.out.println(nomes.toString());
alanmartins

Está certo sim!

Só não mandei imprimir.

Queria fazer o seguinte

import java.util.ArrayList;
import java.util.Collections;

import javax.swing.JOptionPane;

public class Jogadores {

	public static void main(String[] args) {
		
		JOptionPane.showMessageDialog(null, "Digite 12 jogadores");
		ArrayList<String> nomes = new ArrayList<String>();
		
		for (int i = 0; i<12; i++) { 
			nomes.add(JOptionPane.showInputDialog(null, "Jogador: " + (i+1))); 
		} 
		
		Collections.shuffle(nomes) ;
		
		int n=0;
		if (n < 6){
			n++;
			JOptionPane.showMessageDialog(null, "Time A = "  + nomes);
		}else{
			JOptionPane.showMessageDialog(null, "Time B = "  + nomes);
		}
	}
}

Gostaria de separar dois times.

Quando for 6 manda os restante dos jogadores para o time B

criador

Dá de fazer assim:

ArrayList<String> nomesA = new ArrayList<String>(), nomesB = new ArrayList<String>();
for (int i = 0; i < 12; i++) {
if (i < 6) {
        		nomesA.add(JOptionPane.showInputDialog("Jogador " + (i + 1)));
        	} else {
        		nomesB.add(JOptionPane.showInputDialog("Jogador " + (i + 1)));
        	}
}

Abraço!

Criado 21 de outubro de 2009
Ultima resposta 21 de out. de 2009
Respostas 8
Participantes 5