首先,如果之前有人问过我,我很抱歉,我找不到它。我搜索了互联网的深处寻找一些指导,但没有成功。
在我的编程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
答案 0 :(得分:0)
如果您查看PickGame2
课程,您会发现它使用LotteryContainer
来挑选球。 LotteryContainer
有两种方法 - 一种是为球选择一个数字(activate
),另一种是返回被选中的球数(getBall
)。由于您只在pullBall
中拨打PickGame2
,pullBall
仅从getBall
拨打LotteryContainer
,这意味着您永远不会调用activate
方法给你一个新球。
在每次致电activate
之前添加对pullBall
的电话,您每次都会打印一个不同的号码。
(实际上,随机数生成器可以多次生成相同的数字。我不知道你的作业的规格是什么,但是它是否应该模拟a&#34;真实&#34;彩票,每个球不同,然后只生成随机数并显示它们是不够的。)