【问题标题】:Why does my Java "for" loop immediately end?为什么我的 Java“for”循环立即结束?
【发布时间】:2011-03-26 23:22:52
【问题描述】:

我的第一个循环似乎正确地构建了数组,当我在第二个“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);
        }
    }
}

【问题讨论】:

标签: java arrays loops


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    改变

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

    进入

    for (int k = 0; k < j; k++)
    

    【讨论】:

      【解决方案3】:

      我认为您的意思是k &lt;= jk &lt; j,但您输入了k == j。在第一次迭代时情况并非如此,因此循环体永远不会执行。

          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);
          }
      

      【讨论】:

      • 很确定它会是“k
      【解决方案4】:

      而不是for (int k = 0; k == j; k++)(相当于if (k == j))你打算写或for (int k = 0; k &lt; j; k++),即循环j次,而不是循环只要k == j

      【讨论】:

        【解决方案5】:

        这个:

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

        应该是这样的:

        for (int k = 0; k < j; k++)
        

        【讨论】:

          【解决方案6】:

          kett_chup 是对的。我认为你想要“k

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-09-11
            • 2014-01-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-07-02
            • 1970-01-01
            • 2018-10-11
            相关资源
            最近更新 更多