#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
withroll
, что является (предположительно) aint[]
. 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. Я заставил это работать! большое спасибо, чувак, это много значит для такого новичка, как я