publicstaticvoidmain(String[]args){Stringnomes;Scannerscanner=newScanner(System.in);System.out.println("Digite os nomes dos jogadores");nomes=scanner.next();List<String>nomes1=newArrayList<>();nomes1.add(nomes);System.out.print(" TIME 1 \n ");System.out.println("______________________________ \n");Collections.shuffle(nomes1);for(inti=0;i<5;i++){intescolha=(int)Math.random()*nomes1.size();System.out.println("*"+nomes1.get(escolha));nomes1.remove(escolha);}System.out.print(" TIME 2 \n ");System.out.println("______________________________ \n");Collections.shuffle(nomes1);for(inti=0;i<5;i++){intescolha=(int)Math.random()*nomes1.size();System.out.println("*"+nomes1.get(escolha));nomes1.remove(escolha);}}
}
Eu consigo adicionar o primeiro nome, porém quando eu aperto o enter ele me retorna o nome mas da erro. Eu queria n nomes.
A inserção na lista está correta.
Se quer vários nomes, o problema é sua lógica que só lê um nome. Pq n tenta usar um FOR pra ler e inserir vários?
LuanFroehlich1 like
Coloca a stack trace aqui pra gente ver.
G
gujbegin1 like
Fala Victor, blz?
Acabei realizando algumas alterações no código e coloquei alguns comentários.
importjava.util.ArrayList;importjava.util.Collections;importjava.util.List;importjava.util.Scanner;publicclassSorteiaNomesPrimeiroGP2{publicstaticvoidmain(String[]args){Stringnomes;String[]nomesDelimitados;//utilizada para armanezar nomes recebidos pelo método splitScannerscanner=newScanner(System.in);//Recebe os nomes delimitadosSystem.out.println("Digite os nomes dos jogadores delimitados por ',':");nomes=scanner.next();//Inicializa um array de strings com o valor da variável nomes nomesDelimitados=nomes.split(",");ArrayList<String>nomesArrayList=newArrayList<>();//Adiciona nomesDelimatados no ArrayListfor(inti=0;i<nomesDelimitados.length;i++){Stringnome=nomesDelimitados[i];nomesArrayList.add(nome);}System.out.println(nomesArrayList.size());System.out.print(" TIME 1 \n ");System.out.println("______________________________ \n");Collections.shuffle(nomesArrayList);//Realiza um laço até o tamanho do ArrayList//No código anterior o laço sempre acessava uma posição inexistente no ArrayList for(inti=0;i<nomesArrayList.size();i++){//Realiza o cast do resultado da expressão( Math.random() * nomesArrayList.size()//No código anterior, o cast era feito apenas em Math.random()intescolha=(int)(Math.random()*nomesArrayList.size());System.out.println("*"+nomesArrayList.get(escolha));nomesArrayList.remove(escolha);}System.out.print(" TIME 2 \n ");System.out.println("______________________________ \n");Collections.shuffle(nomesArrayList);//Realiza um laço até o tamanho do ArrayListfor(inti=0;i<nomesArrayList.size();i++){intescolha=(int)Math.random()*nomesArrayList.size();System.out.println("*"+nomesArrayList.get(escolha));nomesArrayList.remove(escolha);}}}
Espero ter ajudado.
V
Victor_Salles
Consegui com while, mas não ficou exatamente o que eu queria. Mas por enquanto está me ajudando.
Obrigado
V
Victor_Salles
Cara, seu código me ajudou muito. O achei um problema na hora de executar. Quando ele faz o sorteio o segundo grupo não ssai com a quantidade de nomes solicitados. Consegui fazer aqui o sorteio com a quantidade solicitada.
publicstaticvoidmain(String[]args){Stringnomes;String[]nomesDelimitados;Scannerscanner=newScanner(System.in);System.out.println("Digite os nomes dos jogadores:");nomes=scanner.next();nomesDelimitados=nomes.split(",");List<String>nomes1=newArrayList<>();for(inti=0;i<nomesDelimitados.length;i++){Stringnome=nomesDelimitados[i];nomes1.add(nome);}
// System.out.println(nomes1);System.out.print(" TIME 1 \n “);System.out.println(”______________________________ \n");
// SORTEIA A LISTA DO TIME 1Collections.shuffle(nomes1);// ELIMINA AS REPETIÇÕESfor(inti=0;i<5;i++){intescolha=(int)Math.random()*nomes1.size();System.out.println("*"+nomes1.get(escolha));nomes1.remove(escolha);}System.out.print(" TIME 2 \n ");System.out.println("______________________________ \n");Collections.shuffle(nomes1);// ELIMINA AS REPETIÇÕESfor(inti=0;i<5;i++){intescolha=(int)Math.random()*nomes1.size();System.out.println("*"+nomes1.get(escolha));nomes1.remove(escolha);}}
Agora o próximo passo é fazer com que o usuário escolha a quantidade de jogares pra cada time. ainda chego la.