0
 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,也许我可以在里面进行转换,但我不知道这是否可行。我会很感激帮助。

4

3 回答 3

0

由于input始终是一个字符,因此您应该将其设为 a char,而不是 a 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到最后一个位置的位置input

于 2013-09-23T19:53:28.070 回答
0

阿格斯,

我相信你有变量 input 和 palabra 倒退......试试下面的......

public void guardarPosicion(String input){
    int i = palabra.indexOf(input);
    while(i >= 0) {
        i = palabra.indexOf(input, i+1);
        posiciones.add(i);
    }
}
于 2013-09-23T19:53:56.830 回答
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);
    }
}
于 2013-09-23T19:54:07.917 回答