用Java作业将随机对象用于我的计算机编程



简短,我有此类的教科书实验室分配,目前我正在对对象进行模块。该实验室让我使用一个随机数生成器,但由于自动分级,它需要重复性。它通过与2种子一起播种来做到这一点,但是即使我的程序在正常情况下应完全应有的方式,我似乎也无法得到实验室想要的东西。这是我的指示和我的代码:

编写一个程序,该程序模拟翻转硬币以做出决定。输入是需要多少个决策,输出是头部或尾巴。假设输入的值大于0。

ex:如果输入为3,则输出为:

tails 
heads
heads

对于自动级别所需的可重复性,请以2为2的程序播种。在一个真实程序中,您将在当前时间播种。在这种情况下,每个程序的输出都会有所不同,这是所需的,但不能自动分级。

注意:一个常见的学生错误是在每个调用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而不是零,使用其他if语句以尾巴并将Coinflipval宣布为"等。我只是不知道如何获得他们想要的东西。对我所忽视的东西的任何帮助都非常感谢。这是提交结果(这给出了程序对输出的期望):

1:比较输出0/2输出有所不同。请参阅下面的亮点。输入:

3

您的输出

tails
heads
tails

预期输出

tails
heads
heads

2:单位测试2/2HeadSortails()输入1

您的输出:

HeadsOrTails() with input 1 correctly returned:
tails

3:单位测试0/3HeadSortails()输入5

您的输出:

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

4:单位测试0/3HeadSortails()输入10

您的输出:

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

我的答案与您相同,并且得到了10/10,唯一的区别是我在if之后添加了另一个语句;

public static String headsOrTails(Random rand){
      String coinFlip; // no need to "initialize" as it is definitely assigned just below
      if (rand.nextInt(2) == 0)
         coinFlip = "heads";
      else  // Added code
         coinFlip = "tails";
   return coinFlip;
   }

这应该有效

import java.util.Scanner;
import java.util.Random;
public class LabProgram {
public static String headsOrTails(Random rand) {
   String coinflip = "tails";
  if (rand.nextInt(2) == 0) {
     coinflip = "heads";
     }
  return coinflip;
}
public static void main(String[] args) {
  Scanner scnr = new Scanner(System.in);
  Random rand = new Random(2);
  int choice = scnr.nextInt();
  for (int i = 0; i < choice; i++) {
     System.out.println(headsOrTails(rand));
  }
}
}

最新更新