2
votes

Pendant que vous faites une boucle jusqu'à ce que vous obteniez au hasard le numéro sélectionné, où placer au hasard

en pratiquant des boucles while, j'ai essayé de créer du code dans lequel vous mettez un nombre aléatoire et ensuite vous devinez combien d'essais il faut pour le lancer, mais je ne peux pas déclarer la variable "chance" à l'intérieur du moment, mais si je la mets avant, elle reste 1 nombre glissant.

    Random rng = new Random();
    Scanner input = new Scanner(System.in);
    System.out.println("Select a number you want to roll");
    int choice = input.nextInt();
    System.out.println("You feelin' lucky?\nHow many tries until you get " + choice);
    int tries = input.nextInt();
    int count = 0;
    int chance = rng.nextInt((100)+1);
        while (choice != chance) {
            System.out.println(chance);
            count++;

    }
    System.out.println("You won! It only took " + count + " tries.");
}

Comment puis-je déclarer la chance int pour qu'elle entre dans la boucle while?


2 commentaires

Vous devez réattribuer la chance à l'intérieur de la boucle ... c'est-à-dire chance = rng.nextInt (101);


Êtes-vous conscient que cela pourrait durer éternellement?


3 Réponses :


2
votes

Vous pouvez simplement réattribuer une chance à une nouvelle valeur dans la boucle while:

int count = 0;
int chance = rng.nextInt((100)+1);
while (choice != chance) {
    System.out.println(chance);
    chance = rng.nextInt((100)+1);
    count++;
}


0 commentaires

1
votes

Ne déclarez pas à nouveau la variable chance . Réaffectez-le simplement à une nouvelle valeur.

Random rng = new Random();
Scanner input = new Scanner(System.in);
System.out.println("Select a number you want to roll");
int choice = input.nextInt();
System.out.println("You feelin' lucky?\nHow many tries until you get " + choice);
int tries = input.nextInt();
int count = 1;
int chance = rng.nextInt((100) + 1);

while (tries > 0) {
    System.out.println(chance);
    if (choice == chance)
        break;
    chance = rng.nextInt((100) + 1);
    count++;
    tries--;
}

if (choice == chance) {
    System.out.println("You won! It only took " + count + " tries.");
} else {
    System.out.println("You lost");
}

Problèmes dans le code:

  1. Loop n'utilise jamais essais .
  2. Le code ne détermine pas quand le nombre d'essais n'est pas suffisant pour deviner le numéro saisi par l'utilisateur

Ce qui suit les aborde:

chance = rng.nextInt((100)+1);

Logique:

  1. Utilisez essais pour déterminer combien de fois la boucle doit s'exécuter. Décrémentez-le après chaque exécution.
  2. Si le choix et le hasard sont égaux, alors contrôlez les sauts hors de la boucle.
  3. La dernière condition if est de déterminer si l'utilisateur a pu deviner dans le nombre de essais


0 commentaires

2
votes

Si j'ai bien compris votre question, je pense que vous devriez utiliser la boucle do-while . Il entrera dans la boucle au moins une fois.

Random rng = new Random();
Scanner input = new Scanner(System.in);
System.out.println("Select a number you want to roll");
int choice = input.nextInt();
System.out.println("You feelin' lucky?\nHow many tries until you get " + choice);
int tries = input.nextInt();
int count = 0;

do {
   int chance = rng.nextInt((100)+1);
   System.out.println(chance);
   count++;
} while (choice != chance)

System.out.println("You won! It only took " + count + " tries.");


0 commentaires