为什么我的Java;至于;循环是否立即结束?

为什么我的Java;至于;循环是否立即结束?,java,arrays,loops,Java,Arrays,Loops,我的第一个循环似乎正确地构建了数组,当我在第二个“for”循环中打印结果时,它立即终止。我看不出这个错误。代码如下: public class CoinFlip { private static int Flip() { return (int)(2*Math.random()); //returns 0 or 1; 0=Tails,1=Heads } public static void main(String args[]) {

我的第一个循环似乎正确地构建了数组,当我在第二个“for”循环中打印结果时,它立即终止。我看不出这个错误。代码如下:

public class CoinFlip 
{
    private static int Flip()
    {
        return (int)(2*Math.random());   //returns 0 or 1; 0=Tails,1=Heads 
    }
    public static void main(String args[])
    {
        int HEADS = 1;
        int[] ConsecArray = new int[1000];   // the odds of ever having more than 1000 HEADS consecutively flipped are nil
        int Sequencecounter = 0;
        for (int i = 0; i < ConsecArray.length; i++)
        {
            if (Flip() == HEADS)
            {
                Sequencecounter++;
            }
            else    // we have a TAILS
            {
                // Check sequence counter, if > 0, logging to do...
                if (Sequencecounter > 0)
                {
                    // Update length counters
                    int index = Sequencecounter - 1; 
                    ConsecArray[index]++;
                    Sequencecounter = 0;
                }
                    // consecutive tails, continue in loop
            }
        }
        int j = ConsecArray.length;
        System.out.println("Length" + "     " + "NumberRunsOfHeads");
        for (int k = 0; k == j; k++)
        {
            int index = k + 1;
            String bucketName =  Integer.toString(index);
            String bucketValue = Integer.toString(ConsecArray[k]);
            System.out.println(bucketName + "     " + bucketValue);
        }
    }
}
公共类
{
私有静态int Flip()
{
return(int)(2*Math.random());//返回0或1;0=尾部,1=头部
}
公共静态void main(字符串参数[])
{
int头=1;
int[]consessionarray=new int[1000];//连续翻转超过1000个头部的几率为零
int Sequencecounter=0;
for(int i=0;i0,则记录要执行的操作。。。
如果(Sequencecounter>0)
{
//更新长度计数器
int索引=序列计数器-1;
数组[索引]+;
Sequencecounter=0;
}
//连续尾部,在循环中继续
}
}
int j=数组长度;
System.out.println(“长度”+“+”头数”);
对于(int k=0;k==j;k++)
{
int指数=k+1;
字符串bucketName=Integer.toString(索引);
字符串bucketValue=Integer.toString(数组[k]);
System.out.println(bucketName+“”+bucketValue);
}
}
}

第二个循环的第一次迭代:
k是0
j是1000
测试k==j失败
循环永远不会运行

更改

for (int k = 0; k == j; k++)
进入

for(int k=0;k
我想你的意思是
k而不是
for(int k=0;k==j;k++)
(这相当于
如果(k==j)
)你想写或
for(int k=0;k
,即循环j次,只要
k==j
正确就不循环。我想你想要“k这是:

for (int k = 0; k == j; k++)
应该是这样的:

for (int k = 0; k < j; k++)
for(int k=0;k
不是答案,但在
Flip()
中,您应该缓存一个随机实例并调用
nextBoolean()
。很肯定会是“kfor (int k = 0; k == j; k++)
for (int k = 0; k < j; k++)