从外部类生成For循环中的随机数

时间:2016-07-31 19:42:43

标签: java loops random

首先,如果之前有人问过我,我很抱歉,我找不到它。我搜索了互联网的深处寻找一些指导,但没有成功。

在我的编程II课程中,我们正致力于为乐透创建一个程序。我们已经创建了外部类(在课堂上完成了)并且已经在我们的驱动程序中使用了在这些类中创建的对象。对于这项任务,我们正在创建一个输出彩票号码的程序。程序询问用户是否正在玩Pick 3,4或5,然后应该为每个“球”输出一个随机数。在其中一个单独的类中,我们已经导入并实例化了随机数发生器。但是,当我对数组和循环进行编程时,它会生成适当数量的打印输出(3个打印输出3个,4个打印输出4个,5个打印输出5个),不会为每个循环生成新数字。相反,它保持第一个值并在之后为每个循环打印出来。我在下面提供了我的代码。请帮忙!

import java.util.Scanner;

public class LotteryGame2 {

  public static void main(String[] args){

    //Declare and instantiate objects
    PickGame2 pick = new PickGame2();
    Scanner keyboard=new Scanner(System.in);
    pick.activate();

    //Ask for and obtain user input
    System.out.print("Are you playing Pick 3, Pick 4, or Pick 5? Enter number here: ");
    int numberOfGame=keyboard.nextInt();
    PickGame2[] gamenumber=new PickGame2 [numberOfGame];

    for (int i=0; i<gamenumber.length; ++i){
        int ball=pick.pullBall();
        System.out.println("Ball " + (i+1) + " is " + ball);
    }//Ending bracket of for loop

    //Close Scanner object
    keyboard.close();

  }//Ending bracket of main method
}//Ending bracket of class LotteryGame2

外部类如下:

private int ball;
private Random randomizer;

public LotteryContainer(){
    this.ball=0;
    this.randomizer=new Random();
}//Ending bracket of constructor

public void activate(){
    this.ball=this.randomizer.nextInt(9) + 1;
}//Ending bracket of method activate

public int getBall(){
    return this.ball;
}//Ending bracket of method getBall

private LotteryContainer machine;

public PickGame2(){
    this.machine=new LotteryContainer();
}//Ending bracket of constructor

public void activate(){
    this.machine.activate();
}//Ending bracket of method activate

public int pullBall(){
    return this.machine.getBall();
}//Ending bracket of pullBall

1 个答案:

答案 0 :(得分:0)

如果您查看PickGame2课程,您会发现它使用LotteryContainer来挑选球。 LotteryContainer有两种方法 - 一种是为球选择一个数字(activate),另一种是返回被选中的球数(getBall)。由于您只在pullBall中拨打PickGame2pullBall仅从getBall拨打LotteryContainer,这意味着您永远不会调用activate方法给你一个新球。

在每次致电activate之前添加对pullBall的电话,您每次都会打印一个不同的号码。

(实际上,随机数生成器可以多次生成相同的数字。我不知道你的作业的规格是什么,但是它是否应该模拟a&#34;真实&#34;彩票,每个球不同,然后只生成随机数并显示它们是不够的。)