Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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 - Fatal编程技术网

Java 数一数头上最长的条纹

Java 数一数头上最长的条纹,java,Java,我已经被困在这几个星期了,我不知道怎么做。我只想要最长的脑袋。我试了无数次,但我不知道我做错了什么 public class LongestStreak extends ConsoleProgram { public static final int FLIPS = 100; int currentRun; int runStart; int maxRun; public void run() { double heads = 0; double tails = 0; for(int

我已经被困在这几个星期了,我不知道怎么做。我只想要最长的脑袋。我试了无数次,但我不知道我做错了什么

public class LongestStreak extends ConsoleProgram
{
public static final int FLIPS = 100;
int currentRun;
int runStart;
int maxRun;

public void run()
{
double heads = 0;
double tails = 0;
    for(int i = 0; i < FLIPS; i++)
        {
        if(Randomizer.nextBoolean())
        {
            System.out.println("Heads");
            heads++;
            currentRun++; // use ++ in preference to +=1, and this should be before maxRun test
            if (maxRun < currentRun) {
                maxRun = currentRun;
                runStart = currentRun - i; // this will produce a 1-based position
            } else {
            currentRun = 0;
            }
        }
        else
        {
            System.out.println("Tails");
            tails++;
        }
    }
    System.out.println(FLIPS);
}
公共类LongestStreak扩展控制台程序
{
公共静态最终整数翻转=100;
int currentRun;
int运行启动;
int-maxRun;
公开募捐
{
双头=0;
双尾=0;
对于(int i=0;i

}

我不确定我是否正确理解您的问题,但这里我有一个解决方案,它将在100次翻转中打印出最长的连拍

public static void run() {
    Random r = new Random();
    double heads = 0;
    double tails = 0;
    for (int i = 0; i < FLIPS; i++) {
        if (r.nextBoolean()) {
            System.out.println("Heads");
            heads++;
            currentRun++;
            if (maxRun < currentRun) {
                maxRun = currentRun;
                runStart = currentRun - i;
            }
        } else {
            System.out.println("Tails");
            tails++;
            currentRun = 0;
        }
    }
    System.out.println(FLIPS);
    System.out.println(maxRun);
}
publicstaticvoidrun(){
随机r=新随机();
双头=0;
双尾=0;
对于(int i=0;i
公共类LongestStreak扩展控制台程序
{
公共静态最终整数翻转=100;
公开募捐
{
int连续头=0;
int maxRun=0;
对于(int i=0;i
您永远不会打印条纹。相反,你打印出循环的边界。当尾部被翻转时,你应该考虑将Currin Encun重置为0。AH,所以我把它改为打印出Max Run,但是Max运行似乎只是所有的头。就像在100次翻转中,有51个头。我不想那样。你不应该把currentRun归零,以防你得到线索吗?是的,我把重置添加到了currentRun。有人知道该怎么做吗?
public class LongestStreak extends ConsoleProgram
{
    public static final int FLIPS = 100;


    public void run()
    {

        int consecutiveHeads = 0;
        int maxRun = 0;

        for(int i = 0; i < FLIPS; i++)
        {
            if(Randomizer.nextBoolean())
            {
                System.out.println("Heads");
                consecutiveHeads++;
                    if(maxRun <  consecutiveHeads)
                    {
                         maxRun = consecutiveHeads;
                    }


            }
            else
            {
                System.out.println("Tails");
                consecutiveHeads = 0;
            }
        }

                        System.out.println("Longest streak of heads: " + maxRun);
    }
}