public void guardarPosicion(String input){
int i = input.indexOf(palabra);
while(i >= 0) {
i = input.indexOf(palabra, i+1);
posiciones.add(i);
}
}
这是我使用posiciones
作为ArrayList的方法,palabra
是正在检查字符串的字符串,以查看字符串输入(只有一个字母)是否在其中找到,但是我发现indexOf总是等于-1,所以没有任何东西被添加到ArrayList中。谁能帮我?在我正在使用的项目中,这是唯一不起作用的东西,我无法将参数输入更改为char,也许我可以将其转换为内部但我不知道是否可行。我很感激你的帮助。
答案 0 :(得分:0)
由于input
始终是一个字符,因此您应该将其设为char
,而不是String
。这有助于您确定问题,即您在错误的目标上调用indexOf
:
public void guardarPosicion(char input){
int i = palabra.indexOf(input);
while(i >= 0) {
posiciones.add(i);
i = palabra.indexOf(input, i+1);
}
}
您还需要撤消add
的调用并将i
推进到palabra
中的下一个位置:否则,您将始终错过第一个位置,并添加{{1}代替-1
的最后一个位置。
答案 1 :(得分:0)
阿格斯
我相信你有变量输入和palabra向后...尝试以下....
public void guardarPosicion(String input){
int i = palabra.indexOf(input);
while(i >= 0) {
i = palabra.indexOf(input, i+1);
posiciones.add(i);
}
}
答案 2 :(得分:0)
我已将代码转换为do ... while
循环,以下示例打印[0, 7]
:
问题出在i = input.indexOf(palabra, i+1);
之后,首先找到了正确的值。
import java.util.ArrayList;
public class test {
public static void main(String[] args) {
guardarPosicion("abracadabra");
}
public static void guardarPosicion(String input) {
ArrayList<Integer> posiciones = new ArrayList<Integer>();
String palabra = "abra";
int i=-1;
do {
i = input.indexOf(palabra, i+1);
if (i>=0) {
posiciones.add(i);
}
} while (i >= 0);
System.out.println(posiciones);
}
}