【问题标题】:code not exiting outer for loop代码不退出外部for循环
【发布时间】:2014-10-06 18:53:09
【问题描述】:

我的代码没有退出我的外部 for 循环,即使我到达了字符串的末尾,我也不知道为什么。据我了解,我的外循环应该在第四次迭代后停止。相反,它会继续,然后在 String inputString = input.next(); 处出错。因为那里什么都没有。这是我的代码:

public class Exercise17 {
    public static void main(String[] args) {
        String string = "i think, therefore i am";
        vowelCount(string);     
    }
    public static void vowelCount(String s) {
        Scanner input = new Scanner(s);     
        int[] vowelArray = new int[5];
        int aCount = 0, eCount = 0, iCount = 0, oCount = 0, uCount = 0;
        for(int i = 0; i < s.trim().length() - 1; i++) {
            String inputString = input.next();
            System.out.println(inputString);
            for(int j = 0; j < inputString.length(); j++) {
                char c = inputString.charAt(j);
                System.out.println(c);
                if(c == 'a') {
                    aCount++;                   
                }else if (c == 'e') {
                    eCount++;                   
                }else if (c == 'i') {
                    iCount++;                   
                }else if (c == 'o') {
                    oCount++;                   
                }else if (c == 'u') {
                    uCount++;                   
                }               
            }               
        }
        vowelArray[0] = aCount;
        vowelArray[1] = eCount;
        vowelArray[2] = iCount;
        vowelArray[3] = oCount;
        vowelArray[4] = uCount;
        input.close();
        System.out.println(Arrays.toString(vowelArray));    
    }
}

作为一项实验,我试图摆脱 -1 并将其变为 i

【问题讨论】:

  • 你为什么使用for循环而不是input.hasNext()
  • @azurefrog 我为暂时的精神错乱辩护。

标签: java for-loop


【解决方案1】:

Scanner.next() 读取输入字符串的内容逐字(即“i”、“think”、“therefore”、“i”、“am”),但您正在计算外部逐字母循环(相对于输入字符串)。所以next()调用会在第五次迭代后输入字符串用完时抛出异常。

【讨论】:

  • 是的,你是对的。既然你指出来了,那就很明显了。不知道我在想什么。我可能需要走开休息一下。感谢您的帮助。只要计时器允许,我就会标记为已解决。
  • 当然 :) 请想想@azurefrog 的建议!
猜你喜欢
  • 2017-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-22
  • 2016-08-13
  • 1970-01-01
  • 1970-01-01
  • 2015-02-03
相关资源
最近更新 更多