问题
以下代码将打印2
String word = "bannanas";
String guess = "n";
int index;
System.out.println(
index = word.indexOf(guess)
);
我想知道如何在字符串"bannanas"中获取"n"("guess")的所有索引
预期结果将是:[2,3,5]
#1 热门回答(122 赞)
这应该打印没有-1的位置列表5776323755。
int index = word.indexOf(guess);
while (index >= 0) {
System.out.println(index);
index = word.indexOf(guess, index + 1);
}
它也可以作为aforloop完成:
for (int index = word.indexOf(guess);
index >= 0;
index = word.indexOf(guess, index + 1))
{
System.out.println(index);
}
[注意:ifguess可以比单个字符长,那么通过分析guessstring,可以比上面的循环更快地循环通过word。这种方法的基准是412867409。但是,有利于使用这种方法的条件似乎并不存在。
#2 热门回答(17 赞)
尝试以下(最后不打印-1!)
int index = word.indexOf(guess);
while(index >= 0) {
System.out.println(index);
index = word.indexOf(guess, index+1);
}
#3 热门回答(5 赞)
String string = "bannanas";
ArrayList list = new ArrayList();
char character = 'n';
for(int i = 0; i < string.length(); i++){
if(string.charAt(i) == character){
list.add(i);
}
}
结果将如下使用:
for(Integer i : list){
System.out.println(i);
}
或者作为一个数组:
list.toArray();