Застрял, пытаясь использовать случайный объект для моего вступления в компьютерное программирование с домашней работой Java - PullRequest
2 голосов
/ 14 марта 2019

Вкратце, у меня есть лабораторные задания для этого класса, и в настоящее время я делаю модуль для объектов. В этой лабораторной работе я использую генератор случайных чисел, но из-за автоматической классификации требуется повторяемость. Он делает это, заполняя цифрой 2, но я не могу получить то, что хочет лаборатория, хотя моя программа работает точно так же, как и в обычных условиях. Вот инструкции и мой код:

Напишите программу, которая имитирует подбрасывание монеты для принятия решений. На входе указывается, сколько нужно решений, а на выходе - либо голова, либо хвост. Предположим, что значение ввода больше 0.

Пример: если вход 3, выход:

tails 
heads
heads

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

Примечание. Распространенной ошибкой студента является создание экземпляра Random перед каждым вызовом rand.nextInt (). Но заполнение должно выполняться только один раз, в начале программы, после чего rand.nextInt () может вызываться любое количество раз.

Ваша программа должна определить и вызвать следующий метод, который возвращает «головы» или «хвосты».

public static String HeadsOrTails(Random rand)

А вот что у меня есть:

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

public class LabProgram {

   public static String HeadsOrTails(Random rand) {
      String coinFlipVal = "tails";

      if (rand.nextInt(2) == 0) {
         coinFlipVal = "heads";
         }

      return coinFlipVal;
   }

   public static void main(String[] args) {
      Scanner key = new Scanner(System.in);
      Random randGen = new Random(2); // Unique seed
      int iDecisions = key.nextInt();

      for (int i = 0; i < iDecisions; i++) {
         System.out.println(HeadsOrTails(randGen));
      }
   }
}

Это делает именно то, что и предполагается, так как он дает случайный набор результатов головок или хвостов для любого количества итераций, которые я хочу, но не в порядке, который ищет программа. Я поиграл с моим оператором if, установив его в 1 вместо нуля, используя оператор else if для хвостов и объявив coinFlipVal как "" и т. Д. Я просто не знаю, как получить то, что они ищут. Любая помощь относительно того, что я пропускаю, очень ценится. И вот результаты представления (которые дают то, что программа ожидает от вывода):

1: сравнить вывод 0/2 Выход отличается. Смотрите основные моменты ниже. Входной сигнал:

3

Ваш вывод

tails
heads
tails

Ожидаемый результат

tails
heads
heads

2: модульный тест 2/2 Вход HeadsOrTails () 1

Ваш вывод:

HeadsOrTails() with input 1 correctly returned:
tails

3: модульный тест 0/3 Вход HeadsOrTails () 5

Ваш вывод:

HeadsOrTails() with input 5 incorrectly returned:
tails
heads
tails
heads
heads

4: модульный тест 0/3 Вход HeadsOrTails () 10

Ваш вывод:

HeadsOrTails() with input 10 incorrectly returned:
tails
heads
tails
heads
heads
tails
tails
heads
tails
tails
...