在尝试使用Java作业进行计算机编程入门时,我一直试图使用随机对象

问题描述 投票:2回答:1

简而言之,我为此课有课本实验室的作业,我目前正在对对象做模块。这个实验室让我使用随机数生成器,但是由于自动分级,因此需要可重复性。它通过添加2作为种子来完成此操作,但是即使我的程序完全按照正常情况运行,我似乎也无法获得实验室想要的东西。这是路线和我的代码:

编写一个程序,该程序模拟掷硬币进行决策。输入是需要多少个决策,输出是正面还是反面。假设输入的值大于0。

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

tails 
heads
heads

要获得自动分级所需的可重复性,请使用2值播种该程序。在实际程序中,您将使用当前时间播种。在这种情况下,每个程序的输出都会有所不同,这是所需要的,但无法自动分级。

注意:一个常见的学生错误是在每次调用rand.nextInt()之前创建Random的实例。但是,在程序开始时,只能执行一次播种,之后可以多次调用rand.nextInt()。

您的程序必须定义并调用以下返回“ heads”或“ tails”的方法。

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/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
java random seeding
1个回答
0
投票
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; }
© www.soinside.com 2019 - 2024. All rights reserved.