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

时间:2016-02-24 13:16:08

标签: java loops for-loop

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

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

你在循环中有额外的步骤:

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

你需要的循环是:

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

答案 2 :(得分:0)

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

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

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

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

答案 3 :(得分:0)

您的代码运行正常。您只需将一个问题更改为i <= casei < case。您可以使用此网站使用标准输入来测试您的代码。 https://ideone.com/Ud3MWt