即使我到达字符串的末尾,我也无法退出我的外部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 <s.trim()。length(),并将其更改为i <s.trim()。length()-2,i < s.trim()。length()-3,i <s.trim()。length()-4,依此类推,一直到-10。
Scanner.next()
逐字读取输入字符串的内容(即“ i”,“ think”,“ there因此”,“ i”,“ am”),但是您要逐个字母(相对于输入字符串)对外循环进行计数。因此next()
,在第五次迭代之后,当输入字符串用尽时,调用将引发异常。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句