【发布时间】:2016-12-05 21:07:40
【问题描述】:
首先,如果之前有人问过这个问题但我找不到,我深表歉意。我在互联网的深处搜寻了一些指导,但没有成功。
在我的编程 II 课上,我们正在为彩票创建一个程序。我们已经创建了外部类(在课堂上做了)并在我们的驱动程序中使用了这些类中创建的对象。对于这个任务,我们正在创建一个输出彩票号码的程序。该程序询问用户他们是否在玩 Pick 3、4 或 5,然后应该为每个“球”输出一个随机数。在其中一个单独的类中,我们已经导入并实例化了随机化器。但是,当我对数组和 for 循环进行编程时,虽然它生成了正确数量的打印输出(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
【问题讨论】:
-
您展示的代码创建了一个数组并对其进行迭代。但是没有对任何数组元素进行单一分配。你是不是缺少
gamenumber[i] = ...之类的东西?! -
外部类:{私有 LotteryContainer 机器; public PickGame2(){ this.machine=new LotteryContainer(); } public void activate(){ this.machine.activate(); } public int pullBall(){ return this.machine.getBall(); } } 导入 java.util.Random;公共类 LotteryContainer { 私有 int 球;私人随机随机器;公共 LotteryContainer(){ this.ball=0; this.randomizer=new Random(); } public void activate(){ this.ball=this.randomizer.nextInt(9) + 1; } public int getBall(){ return this.ball;}
-
@GhostCat,我不确定你说它没有任何任务是什么意思。 gamenumber 完全取决于用户输入,然后根据该输入,for 循环打印出它需要的任意数量的球。
-
首先:不要将信息放入不可读的cmets中。而是更新您的问题。问题是;鉴于您当前的输入,根本无法猜测发生了什么。
-
@GhostCat,真的没有必要粗鲁。我只是寻求帮助,让我的代码生成随机数。其他一切都运行良好,没有出现任何错误。