Как мне превратить случайное значение int в переменную, которую я могу использовать и сравнивать в Java?

#java #random #dice

#java #Случайный #игральные кости #кости

Вопрос:

это не очень хороший код, который я знаю, но мне нужна помощь в строке 30 с if (guess == roll) я пытаюсь сделать это, если вы угадаете число правильно, оно скажет, что вы выиграли, а если нет, то оно не скажет, что вы выиграли.

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

public class diceGame 
{
 public static void main(String[] args) 
 {
    Scanner scan = new Scanner(System.in);
    diceGame test = new diceGame();
     
    System.out.println("Number of rolls?: ");
    int numRoll = scan.nextInt();
    
    System.out.println("Gues the number/most common number: ");
    int guess = scan.nextInt();
     
     Random rand = new Random();
    
            for(int i = 0; i < roll.length; i  )
            {
            roll[i] = rand.nextInt(6) 1;
            }
            
        for(int i = 0; i < roll.length; i  )
        {
        System.out.print(roll[i]   ", ");
        }
 
        
        if (guess == roll)
        {
            System.out.println("Good job you guess correct");
        }
        else
        {
            System.out.println("You did not guess correct");
        }
 } 
    
 }
  

Комментарии:

1. 1) вы не можете сравнивать guess , что является int with roll , что является (предположительно) a int[] . 2) где roll объявлено?

2. Вы делаете 6 бросков. Итак, вам нужно сравнить свое предположение с одним из 6 бросков. Фактически, вам нужно сохранить только 1 рулон вместо 6 рулонов (я не уверен, почему вы это сделали).

3. вы можете изменить любое количество рулонов, которое вам нужно или хотите

Ответ №1:

Если вы хотите угадать число с наибольшей частотой после n количества бросков, вы можете обновить количество каждого броска в массив вместо сохранения результата броска каждого броска в массив:

 for(int i = 0; i < roll.length; i  )
{
    roll[rand.nextInt(6)]  ;   //store count of each roll
}
  

Чтобы узнать, угадали ли вы наиболее частотный бросок, найдите максимальное значение (наиболее часто встречающееся число) массива:

 int maxIdx = 0;

for(int i = 0; i < roll.length; i  )
{
    if(roll[i] > roll[maxIdx])
        maxIdx = i;
}
  

Чтобы сравнить ваше предположение с наиболее распространенным числом:

 if (guess == maxIdx 1)  // 1 to maxIdx to offset array start index
{
    System.out.println("Good job you guess correct");
}
else
{
    System.out.println("You did not guess correct");
}
  

Комментарии:

1. Это отлично работает но по какойто причине единственными числами являются 0 1 2

2. какие числа равны 0 1 2?

3. я имею в виду, что вместо кубиков, отображающих числа 1-6, отображается только 0-2

4. Количество кубиков контролируется вами. Вам нужно будет проверить свой код. Возможно, ваш массив был объявлен неправильно или ваш rand.nextInt() неверен. В любом случае, вы можете принять мое решение, если оно ответило на ваш вопрос.

5. Я заставил это работать! большое спасибо, чувак, это много значит для такого новичка, как я