Pessoal , alguem podeira me ajudar .
Exemplo tenho varias Strings como os nomes da semana e queria imprimir elas aleatóriamente.
Pessoal , alguem podeira me ajudar .
Exemplo tenho varias Strings como os nomes da semana e queria imprimir elas aleatóriamente.
Coloque as Strings em uma matriz e utilize o método random para retornar um elemento aleatório da matriz:
Algo como:
public class RandomString {
public static void main(String[] args)
{
String string1 = "domingo";
String string2 = "segunda-feira";
String string3 = "terça-feira";
String string4 = "quarta-feira";
String string5 = "quinta-feira";
String string6 = "sexta-feira";
String string7 = "sábado";
String diasDaSemana[] = {string1, string2, string3, string4, string5, string6, string7 };
String escolhido = diasDaSemana[(int) (Math.random() * diasDaSemana.length)];
System.out.println(escolhido);
}
}
Valeu thiago !
Eu fiz de outra maneira , mas vou usar assim tbm
Coloque as Strings em uma matriz e utilize o método random para retornar um elemento aleatório da matriz:Algo como:
public class RandomString { public static void main(String[] args) { String string1 = "domingo"; String string2 = "segunda-feira"; String string3 = "terça-feira"; String string4 = "quarta-feira"; String string5 = "quinta-feira"; String string6 = "sexta-feira"; String string7 = "sábado"; String diasDaSemana[] = {string1, string2, string3, string4, string5, string6, string7 }; String escolhido = diasDaSemana[(int) (Math.random() * diasDaSemana.length)]; System.out.println(escolhido); } }
neste caso como faço para não repetir o dia?
String escolhido = diasDaSemana[(int) (Math.random() * diasDaSemana.length) - escolhido];
???
Elimine o elemento escolhido do teu conjunto.
ArrayList<String> diasDaSemana = new ArrayList<String>();
diasDaSemana.add("domingo");
diasDaSemana.add("segunda-feira");
diasDaSemana.add("terça-feira");
diasDaSemana.add("quarta-feira");
diasDaSemana.add("quinta-feira");
diasDaSemana.add("sexta-feira");
diasDaSemana.add("sábado");
String escolhido = diasDaSemana.get((int) (Math.random() * diasDaSemana.size()));
diasDaSemana.remove(escolhido);
ArrayList<String> diasDaSemana = new ArrayList<String>(); diasDaSemana.add("domingo"); diasDaSemana.add("segunda-feira"); diasDaSemana.add("terça-feira"); diasDaSemana.add("quarta-feira"); diasDaSemana.add("quinta-feira"); diasDaSemana.add("sexta-feira"); diasDaSemana.add("sábado"); String escolhido = diasDaSemana.get((int) (Math.random() * diasDaSemana.size())); diasDaSemana.remove(escolhido);
Mas utilizando somente o vetor (sem ser ArrayList) , como seria?
ArrayList<String> diasDaSemana = new ArrayList<String>(); diasDaSemana.add("domingo"); diasDaSemana.add("segunda-feira"); diasDaSemana.add("terça-feira"); diasDaSemana.add("quarta-feira"); diasDaSemana.add("quinta-feira"); diasDaSemana.add("sexta-feira"); diasDaSemana.add("sábado"); String escolhido = diasDaSemana.get((int) (Math.random() * diasDaSemana.size())); diasDaSemana.remove(escolhido);
ao tenta rodar , deu o seguinte problema:
run:
java.lang.IndexOutOfBoundsException: Index: 500, Size: 7
at java.util.ArrayList.RangeCheck(ArrayList.java:547)
at java.util.ArrayList.remove(ArrayList.java:387)
at heranca2.Main.main(Main.java:60)
CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)
Quando informa "Indice fora do limite" em um arraylist significa o que?
Olá
Esse erro acontece, qdo vc quer acessar um index que não existe no array.
Para solucionar isso basta substrair 1 do total
String escolhido = diasDaSemana.get((int) ((Math.random() * diasDaSemana.size()) - 1));
Acho que isso já soluciona seu erro.
Espero ter ajudado
Flwsss
Olá
Esse erro acontece, qdo vc quer acessar um index que não existe no array.
Para solucionar isso basta substrair 1 do totalString escolhido = diasDaSemana.get((int) ((Math.random() * diasDaSemana.size()) - 1));Acho que isso já soluciona seu erro.
Espero ter ajudado
Flwsss
Mas aí a gente chega em outro entrave: e se o resultado deste get for 0 (zero)?
Eu não consigo pegar a posição -1 de um vetor.
Olá
Esse erro acontece, qdo vc quer acessar um index que não existe no array.
Para solucionar isso basta substrair 1 do totalString escolhido = diasDaSemana.get((int) ((Math.random() * diasDaSemana.size()) - 1));Acho que isso já soluciona seu erro.
Espero ter ajudado
Flwsss
Thiago,
Mas aí a gente chega em outro problema: e se o resultado deste get for 0 (zero)?
Eu não consigo pegar a posição -1 de um vetor.
Olá
Bem lembrado, precisa de ter um if antes testando…
Não raciocinei direito para responder fui escrevendo sem parar…
Obrigado pela observação
cara acho q deve criar o vetor com os valores e fazer um aleatório com o número do array e mostra o array com o número, para não repetir crie uma lista que receba os valoes ja listados e ponha para q se o valor ja existir na lista ele dar um loop.
Sacou? ele refaz o sorteio até que a lista de valores receba todos os vetores.
Vc nao quer usar arraylist e quer remover o elemento que ja foi usado, mas so para tirar uma duvida.
Vc vai colocar o programa em um loop ?
…
Enquanto nao sair todos os nomes
escreve diadasemana
…
ou vc vai executar toda hora o programa
…
Roda uma vez
escreve um diadasemana
e fecha
…
Roda mais uma vez
escreve um diadasemana
e fecha
…
Se for a segunda opção nao tem geito de excluir nao
Não vejo o porquê de ter dado esse erro. O random nunca deveria dar 500!
Este código funcionou correctamente no meu:
ArrayList<String> diasDaSemana = new ArrayList<String>();
diasDaSemana.add("domingo");
diasDaSemana.add("segunda-feira");
diasDaSemana.add("terça-feira");
diasDaSemana.add("quarta-feira");
diasDaSemana.add("quinta-feira");
diasDaSemana.add("sexta-feira");
diasDaSemana.add("sábado");
String escolhido;
for (int i = 0; i<7; i++){
escolhido = diasDaSemana.get((int) (Math.random() * diasDaSemana.size()));
diasDaSemana.remove(escolhido);
System.out.println(escolhido);
}
Pegando no código inicial e usando array:
String string1 = "domingo";
String string2 = "segunda-feira";
String string3 = "terça-feira";
String string4 = "quarta-feira";
String string5 = "quinta-feira";
String string6 = "sexta-feira";
String string7 = "sábado";
String diasDaSemana[] = {string1, string2, string3, string4, string5, string6, string7 };
boolean disponivel[] = {true, true, true, true, true, true , true};
int cont = 0;
int posicao;
while (cont < 7){
posicao = (int) (Math.random() * diasDaSemana.length);
if (disponivel[posicao]){
System.out.println(diasDaSemana[posicao]);
disponivel[posicao] = false;
cont++;
}
}
A solução do “pmlm” está perfeita.
Otima jogada essa do true.