我目前正在学习 AP 计算机科学考试学习指南,但我遇到了其中一个问题。
String s = "mathematics";
String vowels = "aeiou";
int number = 0;
for(int i = 0;i<s.length();i++){
number += s.indexOf(vowels.substring(0));
}
代码执行后number
的值是多少?我得出的结论是11,因为元音的第一个索引是“a”,所以a第一次出现在s
中是在索引1处。经过11次循环后,结果将是11。但是对于出于某种原因,正确答案是-11。我可以理解它是如何为负的,因为只要在字符串中找不到它,它就会返回 -1 。但我完全不明白为什么会在这种情况下发生。如有任何帮助,我们将不胜感激!
最佳答案
首先,认识到 vowels.substring(0)
不执行任何操作。从位置 0
开始的子字符串相当于字符串本身。
字符串元音
或“aeiou”
不会出现在“mathematics”
中的任何位置,因此indexOf
code> 将返回 -1
11 次("mathematics"
的长度为 11
)。因此,最后number
的结果是-11
。
虽然还不清楚你到底想要什么,但如果你想获取字符串 s
中每个元音的位置,你必须重写你的 for
循环并使用 charAt(i)
或 substring(i, i + 1)
。
关于java - 与字符串方法 .indexOf() Java 混淆的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22520137/