【问题标题】:Java: For loop not printing the last iterationJava:For循环不打印最后一次迭代
【发布时间】:2016-02-24 13:16:08
【问题描述】:

我目前正在尝试制作一个简单的程序来计算多个句子中元音的数量。输入如下所示:
6
艾米丽跳得很高
亚历克斯没有跳
菲利普讨厌跳跃
红龙会飞
三明治很好吃
我喜欢阳光

数字表示有多少行。我的问题是,当我打印出结果时,最后一行被忽略了。所以程序打印出 5 个整数,而不是 6 个。我已经玩了很长时间了,但我似乎无法理解这个问题。

Scanner in = new Scanner(System.in);
int cases = in.nextInt(); //how many lines there are 
String a; 
int vowels = 0;
int length; //length of a line
char temp;
in.nextLine(); //skips first line of the input, as this declares how many lines there are

for (int i = 0; i <= cases; i++) 
{
    a = in.nextLine();
    length = a.length();
    //System.out.println(a);
    for (int b = 0; b < length; b++)
    {
        temp = a.charAt(b);
        if (temp == 'a' || temp == 'e' || temp == 'i' || temp == 'o' || temp == 'u')
        {
            vowels++;
        }
    }
    System.out.println(vowels);
    vowels=0;
}

【问题讨论】:

  • 请注意,i 应该从 1 开始,否则在您的示例中您将获得 7 次迭代。
  • 您能否将预期和实际输出也包括在内,因为我现在不明白您的问题是什么。
  • @KevinEsche 预期输出为 4 4 6 5 7 5,而实际输出为 4 4 6 5 7
  • 我建议你在调试器中逐步检查你的代码,看看出了什么问题,阅读你的代码它应该为 0,1,2,3,4,5,6 迭代 7 次
  • 您是否进行了任何更改,并且您确定您使用的是此版本的代码,因为它似乎产生了您期望的输出。

标签: java loops for-loop


【解决方案1】:

由于某种原因,当我发布输入时,它会自动显示前 5 个整数,然后我只需按 Enter 键即可显示最后一个整数。所以显然,按 Enter 键现在也是我获得的技能之一;)

【讨论】:

    【解决方案2】:

    你有额外的循环步骤:

    for (int i = 0; i <= cases; i++)
    

    你需要的循环是:

    for (int i = 0; i < cases; i++) 
    

    【讨论】:

      【解决方案3】:

      您正在循环 case+1 次,即 7 次。您应该使用

      for (int i = 0; i < cases; i++)
      

      for (int i = 1; i <= cases; i++)
      

      否则您的代码将打印预期的输出。

      【讨论】:

        【解决方案4】:

        您的代码运行良好。只有一个问题,您需要将i &lt;= case 更改为i &lt; case。您可以使用此网站使用标准输入测试您的代码。 https://ideone.com/Ud3MWt

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-12-22
          • 1970-01-01
          • 2013-03-18
          • 1970-01-01
          • 2021-03-13
          • 1970-01-01
          • 2019-11-30
          • 2016-05-10
          相关资源
          最近更新 更多