使用indexOf搜索时输出错误

时间:2011-03-28 06:14:20

标签: java

 int locsPlusLast = locsPlus.get(locsPlus.size()-1);
        System.out.println(locsPlusLast);
          int index = checkScanning.indexOf('(',locsPlusLast);
             while(index>=0){
                   index = checkScanning.indexOf('(',locsPlusLast+1);
                 System.out.println(index);
         }

checkScanning 是扫描仪输入。

我只想输出(,但它输出的信息)两个位置,为什么会这样?

3 个答案:

答案 0 :(得分:1)

对不起,我误解了你的问题 试试这个:

private static void positionOf(char target, String query) {

    int position = 0;
    int result = 0;

    while(-1 != (result = query.indexOf(target, position))){

        System.out.println(result);
        position = result +1;
    }
}

答案 1 :(得分:0)

你可以在循环中使用indexOf并递增计数器以找出数量 在字符串中出现单个指定字符。你不需要在这里使用while循环。 indexOf(int ch, int fromIndex)返回索引。

int pos = str.indexOf('(');
while(pos  >= 0) {
 System.out.println(pos);
 pos = str.indexOf('(', pos +1);
}

答案 2 :(得分:0)

你是否想找到char的位置'''? API indexOf()的第二个参数是起始索引,搜索在此索引之后执行。

如果您提供checkScanning的值和查询的输出,将会很有帮助。

API:

indexOf(String str, int fromIndex) 
// Returns the index within this string of the first occurrence of the specified
// substring, starting at the specified index.

实施例

String str = "Test(Bracket)(position)";
System.out.println("Position: "+ str.indexOf('(',1));
System.out.println("Position: "+ str.indexOf('(',5));

输出:

Position: 4
Position: 13