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

Я должен сделать программу для игры в кости.программа спросит, сколько раз вы хотите бросить кости, а затем спросит, для какого числа вы хотите получить статистику (2-12).затем он бросает кубик (x) количество раз и выдает количество бросков каждый раз.затем он сообщит вам количество раз, когда каждое число (2-12) было брошено, и должно завершиться с программой, сообщающей вам, какой процент от числа, которое вы запросили, чтобы просмотреть статистику (пример: из 25 бросков костей), К 2 добавлено 2 броска. Процент 10 брошенных составляет 8%).

мне нужно использовать методы для этой программы, и мой метод статистики выводит 1 вместо того, сколько бы раз 7 не отображалось (Я использую 7 в качестве своего рода тестера для того, что я делаю, так как 7, как предполагается, часто всплывает во время бросков костей).

Я использую Drjava, и я не должен использоватьотладчик моих программ, так как наш инструктор еще не научил нас, как это делать!я думаю, что мой цикл - проблема, потому что я пытаюсь заставить d напечатать.

также, как я мог бы найти процент раз, когда мое выбранное число было свернуто?

import java.util.*; 
public class EZD_diceRoll
 {
  public static void main(String args[])
{



  EZD_diceRoll.roll();
  EZD_diceRoll.statistics(d);
}

 private static int die1;
 private static int die2;
 private static int total;
 public static int number;
 public static int d;
 public static int times;

 public static void roll()
 {
  Random nums = new Random();
  Scanner kbReader = new Scanner(System.in);

  System.out.print("How many times would you like to roll?");
  times = kbReader.nextInt();
  System.out.print("What number (dice roll total) do you want the statistics 
  for (2 - 12)?");
  number = kbReader.nextInt();


  for(int a = 1; a < times + 1; a++)
 {
  die1 = 1 + nums.nextInt(6);
  die2 = 1 + nums.nextInt(6);
  total = die1 + die2;

  System.out.println("Dice roll #" + a + " is " + total);
 }
}


public static void statistics(int d)
{

  for(int c = 0; c < times + 1; c++)
    {

    if(total == 7)
      {
        d++;
      }
    }
  System.out.println("The number of 7's thrown was " + d);
 }
}

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

инициализировать счетчики (int var) для выходных значений костей (2-12) и используйте оператор switch внутри для цикла, для каждого вывода броска укажите регистр внутри переключателя и счетчик приращения для каждого случая, и эти значения счетчика дают число раз, когда значение свернуто.

приведенный ниже код печатается для каждого броска, если вам нужно только окончательное число, просто используйте все операторы system.out.print вне (после) цикла for вместо их использования в операторе case.

  int[] count=new int[10] //counter for values 2-12


for(int a = 0; a < times + 1; a++)      
{
  die1 = 1 + num.nextInt(6);

  die2 = 1 + num.nextInt(6);

  total = die1 + die2;

switch(total)

  {     
 case 2:
 count[0]++;

 System.out. print("dice 2 rolled" +count[0] +" time");
 break;


 case 3:

 count[1]++;

 System.out. print("dice 3 rolled" +count[1] +" time");
 break;


  case 4:

  count[2]++;

  System.out. print("dice 4 rolled" +count[2] +" time");
 break;

.

.

 .

 .

case 12:

 count[10]++;

System.out. print("dice 12 rolled" +count[10] +" time");
break;

} }

0 голосов
/ 17 мая 2018

Используйте java.util.HashMap,

HashMap<Integer, Integer> map = new HashMap<>();

Ключ представляет собой конкретное число, значение представляет частоту.Когда вы получите номер, проверьте, существует ли он на карте.Если нет, поместите его в карту с начальной частотой 1.В противном случае увеличьте значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...