如何将String中字母的indexOf位置添加到ArrayList

时间:2013-09-23 19:48:56

标签: java arraylist

 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,也许我可以将其转换为内部但我不知道是否可行。我很感激你的帮助。

3 个答案:

答案 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);
    }
}