【问题标题】:For each loop won't print correctly对于每个循环都不会正确打印
【发布时间】:2014-10-29 01:06:59
【问题描述】:

我不知道为什么这不会打印出任何东西

for (int number : humidity)
         {
            if (sum < 12)
            {
             System.out.printf("%6d",humidity[sum]);
             sum++;
            }
         }

湿度取自文件

Scanner inFileHumid = new Scanner(fileNameHumid);
int [] humidity = new int[length];

然后设置为数组

while (inFileHumid.hasNextInt())
        {
                humidity[n] = inFileHumid.nextInt( );
                n++;
        }

文件中的数字是 69 67 66 64 66 69 67 67 70 69 69 70 这是我试图在每个循环中打印出来的数字

【问题讨论】:

  • 你能粘贴你的整个班级以及应该打印的内容吗?
  • 什么是 sum 为什么你用 sum 而不是 number?
  • sum的初始值是多少?
  • Sum 在初始化时设置为 0

标签: java loops foreach printf


【解决方案1】:

您正在迭代humidity 中的每个number,但随后您忽略了这些值并测试了一些不相关的sum。我想你想要

for (int number : humidity)
{
  System.out.printf("%6d", number);
}

等价

for (int sum = 0; sum < humidity.length; sum++)
{
  System.out.printf("%6d", humidity[sum]);
}

【讨论】:

    【解决方案2】:

    我认为您在索引湿度时遇到了问题。所以这应该有效。

    for (int number : humidity){
                if (number < 12) // Look at the value
                {
                    System.out.printf("%6d", number);  // Print what is in the array
                }
    }
    

    【讨论】:

      【解决方案3】:

      假设在进入循环之前 sum 为零,则该代码有效。

          int[] humidity = {1,2,3,4,5,6,7,8,9,0,1,2};
          int sum= 0;
          for (int number : humidity) {
              if (sum < 12) {
                  System.out.printf("%6d", humidity[sum]);
                  sum++;
              }
          }
      

      制作:

       1     2     3     4     5     6     7     8     9     0     1     2
      

      因此,在进入循环之前,失败的代码总和必须大于或等于 12。

      【讨论】:

        猜你喜欢
        • 2016-01-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多