Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java程序(硬币投掷模拟)_Java_Class_Oop - Fatal编程技术网

Java程序(硬币投掷模拟)

Java程序(硬币投掷模拟),java,class,oop,Java,Class,Oop,这是FlipRace程序的代码,该程序启动两枚硬币之间的比赛。目标是一个全局声明的变量。无论哪一枚硬币达到目标,头数最快者获胜。下面是硬币类别的代码 我的问题是,如果我把目标设为3,也就是说,无论哪一枚硬币以最快的速度赢得3个头球,都可以。当我将目标设置为4时,它仍然可以正常工作。但当我把目标定在4以上时,奇怪的事情就开始发生了。假设我把目标设为7,但最终结果只有在一枚硬币上有4个头像而不是7个头像时才会出现 // FlipRace.java package nisarg; public cl

这是FlipRace程序的代码,该程序启动两枚硬币之间的比赛。目标是一个全局声明的变量。无论哪一枚硬币达到目标,头数最快者获胜。下面是硬币类别的代码

我的问题是,如果我把目标设为3,也就是说,无论哪一枚硬币以最快的速度赢得3个头球,都可以。当我将目标设置为4时,它仍然可以正常工作。但当我把目标定在4以上时,奇怪的事情就开始发生了。假设我把目标设为7,但最终结果只有在一枚硬币上有4个头像而不是7个头像时才会出现

// 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,这似乎也奏效了。我建议您清理并重建项目,以前的版本可能会留下一些东西。