Java程序(硬币投掷模拟)
这是FlipRace程序的代码,该程序启动两枚硬币之间的比赛。目标是一个全局声明的变量。无论哪一枚硬币达到目标,头数最快者获胜。下面是硬币类别的代码 我的问题是,如果我把目标设为3,也就是说,无论哪一枚硬币以最快的速度赢得3个头球,都可以。当我将目标设置为4时,它仍然可以正常工作。但当我把目标定在4以上时,奇怪的事情就开始发生了。假设我把目标设为7,但最终结果只有在一枚硬币上有4个头像而不是7个头像时才会出现Java程序(硬币投掷模拟),java,class,oop,Java,Class,Oop,这是FlipRace程序的代码,该程序启动两枚硬币之间的比赛。目标是一个全局声明的变量。无论哪一枚硬币达到目标,头数最快者获胜。下面是硬币类别的代码 我的问题是,如果我把目标设为3,也就是说,无论哪一枚硬币以最快的速度赢得3个头球,都可以。当我将目标设置为4时,它仍然可以正常工作。但当我把目标定在4以上时,奇怪的事情就开始发生了。假设我把目标设为7,但最终结果只有在一枚硬币上有4个头像而不是7个头像时才会出现 // FlipRace.java package nisarg; public cl
// FlipRace.java
package nisarg;
public class FlipRace {
public static void main(String[] args){
final int GOAL = 6;
int count1=0,count2=0;
Coin myCoin1 = new Coin();
Coin myCoin2 = new Coin();
while(count1 < GOAL && count2 < GOAL){
myCoin1.Flip();
myCoin2.Flip();
System.out.print("Coin1 : " +myCoin1 +"\t");
System.out.println("Coin2 :"+myCoin2);
count1 = (myCoin1.isHeads())? count1+1 : 0;
count2 = (myCoin2.isHeads())? count2+1 : 0;
}
if(count2 < GOAL) {
System.out.println("Coin1 wins!!");
} else if(count1 < GOAL){
System.out.println("Coin2 wins!!");
}
else {
System.out.println("Its a tie!!");
}
}
}
// Coin.java
package nisarg;
import java.util.Random;
public class Coin {
private final int HEADS = 1;
private final int TAILS = 0;
private int face;
public Coin(){
Flip();
}
public void Flip(){
face = (int)(Math.random()*2);
}
public boolean isHeads(){
return(face == HEADS);
}
public String toString(){
String faceName;
if(face == HEADS){
faceName = "H";
}
else {
faceName = "T";
}
return faceName;
}
}
这不应该吗,count1=mycin1.ishads?count1+1:0;相反,count1+=myCoin1.ishads?1 : 0;? 否则,如果不是头部,您似乎将count1设置为0,而该设置应保持不变。可能他们正在朝着连续X次头部翻转的方向跑去。@Wug:啊,很有可能。他没有说明这一点,但他可能忘了告诉我们。如果我忘了提及,我很抱歉……但无论哪一枚硬币达到目标,连续赢的人头数都是连续赢的。这就是为什么一旦出现尾巴,我会将count1和count2设为0。当我运行你当前的代码时,我甚至没有完全检查它,我得到了连续6个人头后的硬币2。我把目标改为7,这似乎也奏效了。我建议您清理并重建项目,以前的版本可能会留下一些东西。