繁体   English   中英

Java:For循环不打印最后的迭代

[英]Java: For loop not printing the last iteration

我目前正在尝试制作一个简单的程序,该程序将计算多个句子中的元音数量。 输入看起来像这样:
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;
}

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

您有额外的循环步骤:

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

您需要的循环是:

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

您正在为案例循环1次,即7次。 你应该使用

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

要么

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

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

您的代码工作正常。 您只需要将i < case i <= case更改为i < case一个问题。 您可以使用该网站通过std输入测试您的代码。 https://ideone.com/Ud3MWt

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM