Как мне создать al oop, который будет генерировать случайные числа, пока они не совпадут с моими пользовательскими данными? - PullRequest
0 голосов
/ 10 января 2020

Я очень новичок в java. Я делаю упражнение, и я застрял. В основном я должен

  1. Попросить пользователя выбрать случайный # от 1 до 100. Спросите еще раз, если не между этими #.
  2. Генерируйте случайный # между 1-100, пока он не совпадет с пользовательским вводом.
  3. Распечатайте соответствующее число и количество попыток, чтобы получить соответствующий номер.

Пока я сделал это:

import java.util.Scanner;
import java.util.Random;

public class RoughNums {
   public static void main(String[]args) {
      Scanner reader = new Scanner(System.in);
      Random rand = new Random();
      int rantInt = rand.nextInt(101);

      while(true) {
         System.out.println("Hello friend! Pick a number between 1 - 100: ");
         int pick = Integer.parseInt(reader.nextLine());

         if(pick > 100) {
            System.out.println("Oops, number too big! Please try again!\n");
         } else {
            System.out.println("Let's see if I can get the same number too!");
         }

      }

   }
}

Я не уверен куда go отсюда. Должен ли я добавить еще один, пока l oop? Если так, как я должен написать это? Как генерировать случайные числа, пока они не совпадут с введенным пользователем номером?

Ответы [ 3 ]

2 голосов
/ 10 января 2020

Это простое время l oop с логическим значением для поиска и счетчиком попыток. Также rand.nextInt(101) получит число от 0 до 100, поэтому вы должны изменить его, как я делал в примере. Я запустил int pick в начале, чтобы мы не создавали его дважды, если пользователь ввел неправильный номер

public class RoughNums{
   public static void main(String[]args){
      Scanner reader = new Scanner(System.in);
      Random rand = new Random();
      int pick;
      int rantInt = 0;
      int tries = 0;
      boolean found = false;

         while(true) {

           System.out.println("Hello friend! Pick a number between 1 - 100: ");
           pick = Integer.parseInt(reader.nextLine());

          if(pick > 100){
          System.out.println("Oops, number too big! Please try again!\n");

                  }
          else {
          System.out.println("Let's see if I can get the same number too!");


          break;}

          }      

         while(!found){
             rantInt = rand.nextInt(100) + 1; // Genrating number between 1 - 100
             tries++;
             if(pick == rantInt){
                 found = true;
             }
         }

         System.out.println("Your number is " + rantInt + " and I found it in " + tries + " tries");



      }
      }
0 голосов
/ 08 февраля 2020

Я думаю, что вам просто нужно использовать while l oop, чтобы добиться цели, и просто добавить переменную count, чтобы отобразить, сколько попыток вам понадобилось, чтобы заставить ГСЧ угадать ваш номер. Вот решение, основанное на опубликованном вами коде.

import java.util.Scanner;
import java.util.Random;

public class RoughNums{
    public static void main(String[]args){
        Scanner reader = new Scanner(System.in);
        Random rand = new Random();
        int rantInt = rand.nextInt(101);
        int pick;

        while(true) {

            System.out.println("Hello friend! Pick a number between 1 - 100: ");
            pick = Integer.parseInt(reader.nextLine());

            if(pick > 100){
                System.out.println("Oops, number too big! Please try again!\n");

            } else if(pick < 1){
                System.out.println("Oops, number too small! Please try again!\n");

            }
            else {
                System.out.println("Let's see if I can get the same number too!");


                break;}

        }

        int count = 0;
        while (rantInt != pick){
            count++;
            rantInt = rand.nextInt(101);
        }

        System.out.println( pick + " was found using " + count + " tries.");
    }
}
0 голосов
/ 10 января 2020

Да. После получения выбора пользователя вам понадобится другое время, пока l oop, чтобы генерировать случайное число, пока оно не совпадет с выбором пользователя. В принципе это может выглядеть примерно так:

int rantInt;
while(true) {
   // Add code to count number of tries
   rantInt = rand.nextInt(101);
   if(rantInt == pick) { break; }  
}

Другой способ генерирования случайного числа между минимальным и максимальным (оба включительно) числами:

int range = max - min + 1; 
int rand = (int)(Math.random() * range) + min; 
...