package trabalho2;
import java.util.Scanner;
import java.util.Random;
public class Trabalho2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Random ra = new Random ();
int valor;
valor = (char)(65 + (Math.random() * 90));
System.out.println(valor);
}
}
Quero que ele gere uma letra aleatória.
As letras são de 65 a 90 então preciso gerar um número aleatório entre 65 e 90 e passar ele pra char.
Do jeito que eu fiz não deu certo, alguém pode ajudar ?
OBS: O SCANNER VOU USAR DEPOIS, ELE NÃO TÁ ALI DE BOBERA ^^
Obrigado!
Note que random gera valores entre 0 (inclusive) e 1 (exclusive).
Suponha que o valor de random() fosse zero. O caracter seria 65 + 0 = 65, está certo.
Agora suponha que o valor de random() fosse 1. O caracter resultante seria 65 + 90 = 155, o que não está certo para você.
Pense só um pouquinho - só um pouquinho mesmo. Que conta você precisa fazer para o maior valor dar 90, em vez de 155? Deve faltar uma continha bem bobinha aí.
Consegui cara…
Fiz um pouco diferente mas deu certo:
valor = (65 + ra.nextInt(90 - 65));
System.out.println((char)valor);
Minha dúvida agora é o seguinte:
- Preciso agrupar 3 letras e 2 números para formar uma senha.
Blza, gerei lá 3 letras aleatórias e 2 números aleatórios e deu
A, G, F, 4 e 9… preciso que agrupe tudo numa variável e imprima: AGF49
Alguma dica???
Obg!!
1 curtida
faça uma String e concatene tudo nela…
Jogue td em uma String
Gere seus valores, provalvemente vc ira gerar em um looping.
entao vc pode concatenar os valores gerados
String senha = "";
// For onde contem a geracao da senha
for(...) {
senha.concat( String.valueOf( (char)valor));
}
Abraço
Entendi mais ou menos…
Tipo nesse código que vc falo ele ta convertendo cada um dos 5 valores aleatórios para char e depois concatenando os 5, certo ?
Eu preciso que convetar somente 3 valores para char, e os outros dois permaneçam int.
Para daí sim concatenar os 5 valores e ficar tipo:
String senha = "ABC12";
EDIT
Olha meu código
package trabalho2;
import java.util.Scanner;
import java.util.Random;
public class Trabalho2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String senha = "";
Random ra = new Random();
int sistema = 1, valor, i;
int somaValores[] = new int [5];
int opcao;
System.out.println("SISTEMA DE GERENCIAMENTO DE SENHAS");
while (sistema == 1) {
System.out.println("\nEscolha a opcao que deseja executar:");
System.out.println("1 para gerar senha normal.");
System.out.println("2 para gerar senha prioritaria.");
System.out.println("3 para chamar o proximo da fila.");
System.out.println("\nSENHA DA VEZ: ");
System.out.println("\n0 SAIR");
opcao = sc.nextInt();
while (opcao!=1 && opcao!=2 && opcao!=3 && opcao!=0) {
System.out.println("Opcao invalida. Digite novamente:");
opcao = sc.nextInt();
}
if (opcao == 0) {
System.out.println("SISTEMA FINALIZADO");
System.exit(0);
}
if (opcao == 1) {
for (i = 0; i < 3; i++) {
valor = (65 + ra.nextInt(90 - 65));
somaValores[i] = valor;
}
for (i = 3; i < 5; i++) {
valor = ra.nextInt(10);
somaValores[i] = valor;
}
senha.concat(String.valueOf((char)valor));
System.out.println("Sua senha: " + senha);
}
if (opcao == 2) {
for (i = 0; i < 3; i++) {
valor = (65 + ra.nextInt(90 - 65));
somaValores[i] = valor;
}
for (i = 3; i < 5; i++) {
valor = ra.nextInt(10);
somaValores[i] = valor;
}
senha.concat(String.valueOf((char)valor));
System.out.println("Sua senha: " + senha);
}
}
}
}
Ta acusando erro no senha.concat…
Fala que a variavel valor não foi inicializada.
o que ele quis dizer com valor, é no caso " A B C 1 2" entendeu ?
vc vai ter que ir percorrendo os valores da senha e ir concatenando…
Eu gero os 5 valores como números.
E armazeno eles no vetor de inteiros:
valores[0], valores[1], valores[2], valores[3] e valores[4].
65, 66, 67, 1 e 2
Depois de gerar os 5 quero passar os valores que estão nas posições 0, 1 e 2 para char.
Aí sim concatenar os recém valores char com os valores das outras posições.
Ficando ABC12.
Não sei se é isso que vcs estão me expicando como fazer mas eu não entendi ^^
Valeuuu
String senha = String.valueOf(valores[0]) + String.valueOf(valores[1]) + String.valueOf(valores[2]) + String.valueOf(valores[3]) + String.valueOf(valores[4]);
creio que seria isso q vc quer fazer…