Boa madrugada!
Primeiramente, peço desculpas pelo modo que irei descrever o meu problema, pois, é a primeira vez que posto num “fórum” de programação… Enfim…
Estou desenvolvendo um código de adivinhação-simples, aonde o jogador terá que adivinhar um número aleatório, gerado pela função random. Porem, ao jogador “dar os comandos”, que são lidos pelo scanner, ele necessita pressionar 2 vezes a tecla Enter.
Alguém sabe dizer o que pode ser o erro?
Obs: já “ouvi falar” com problema de buffer, até tive um erro próximo, em outro código, e consegui resolver com “System.out.println();”.
Mostre o seu código que está com esse problema, pois assim é mais fácil vermos o que pode estar errado.
Abraço.
Agora, o código esta fazendo a leitura correta… Apenas “dei um tempo do código” e, ao ligar o pc, no outro dia, está funcionando. Não faço ideia o pq, mas esta funcionando corretamente, para mim…
Mas enfim, segue o código, caso consiga me indicar o suposto - e/ou pq “ele” voltou a funcionar"…
package adivinhação;
import java.rmi.activation.ActivationSystem;
import java.util.Random;
import java.util.Scanner;
public class adv_num_0a100 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int dfcl,chute,pgt;
int vidas = 0;
Random aleatorio = new Random();
int numero_misterioso = aleatorio.nextInt(100) + 1;
boolean tentarnovamente = false;
boolean ptgnovamente= false;
boolean ptgnovamente2= false;
String pergunta = "";
String status = "";
do {
System.out.println("A dificuldade definirá quantas chances tu terá para acertar o número misterioso ");
System.out.println(" que vai de 0 a 100 ");
System.out.println("1- muito jovem para morrer");
System.out.println("2- um tapinha não dói ");
System.out.println("3- ultraviolento ");
System.out.println("4- pesadelo ");
do {
System.out.println("Informe o número da dificuldade escolhida:");
dfcl = sc.nextInt();
if(dfcl == 1) {
vidas = 100;
ptgnovamente = false;
}
else if(dfcl==2) {
vidas = 50;
ptgnovamente = false;
}
else if(dfcl==3) {
vidas = 10;
ptgnovamente = false;
}
else if(dfcl==4) {
vidas = 1;
ptgnovamente = false;
}
if(dfcl<1 || dfcl>4){
ptgnovamente = true;
}
}while(ptgnovamente);
for(int round = 1;round <= vidas;round++) {
do {
System.out.printf("Digite o %2dº chute de %d.\n",round,vidas);
chute = sc.nextInt();
if(chute >= 1 && chute <= 100) {
if(chute == numero_misterioso) {
status="correto";
}
else if(chute > numero_misterioso) {
status="passou";
}
else if(chute < numero_misterioso) {
status="faltou";
}
switch (status) {
case "correto":
System.out.println("Redemption Denied, fim de jogo...... ");
System.out.println("tô brincando, vc ganhou");
round = vidas;
break;
case "passou":
System.out.println("o chute foi maior que o número misterioso ");
break;
case "faltou":
System.out.println("o chute foi menor que o número misterioso ");
break;
}
}
else {
System.out.println("não foi digitado um numero entre 0 e 100");
tentarnovamente = true;
}
}while(tentarnovamente);
}
System.out.println("Fim de jogo");
System.out.println();
do {
System.out.println("Deseja continuar (1-sim/2-nao)?");
System.out.println("Digite o numero correspondente:");
pgt = sc.nextInt();
System.out.println();
if (pgt==1 ) {
ptgnovamente2 = false;
pergunta="sim";
}
else if(pgt ==2) {
ptgnovamente2 = false;
pergunta="nao";
}
else {
ptgnovamente2 = true;
}
}while(ptgnovamente2);
}while (pergunta.equalsIgnoreCase("sim"));
sc.close();
System.out.println("Sem redenção pra ti");
}
}
Está funcionando pq computação é uma ciência não determinística, mística e exotérica. O computador decide quando vai fazer direito ou não. É assim mesmo, não se assuste… (é brincadeira tá?)