Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 搜索函数在每一新行上添加索引_Java_Search_Loops_For Loop - Fatal编程技术网

Java 搜索函数在每一新行上添加索引

Java 搜索函数在每一新行上添加索引,java,search,loops,for-loop,Java,Search,Loops,For Loop,所以我一直在写一个聊天客户端,我决定做一个搜索功能,这样你可以在聊天历史中找到一个特定的单词,然后它选择它。然而,所发生的事情是,选择的初始行下面的每一行都是它应该选择的单词右边的许多索引。是否缺少新行字符或索引位置 如何绕过每行上不断变化的索引? 或者我的代码中有一个问题: private void nextButtonActionPerformed(java.awt.event.ActionEvent evt) {

所以我一直在写一个聊天客户端,我决定做一个搜索功能,这样你可以在聊天历史中找到一个特定的单词,然后它选择它。然而,所发生的事情是,选择的初始行下面的每一行都是它应该选择的单词右边的许多索引。是否缺少新行字符或索引位置

如何绕过每行上不断变化的索引? 或者我的代码中有一个问题:

private void nextButtonActionPerformed(java.awt.event.ActionEvent evt) {                                           
    toSearchText = searchText.getText();
    if (!toSearchText.equals("")) {
        for (int i = index; i < searchBlock.length(); i++) {
            if (searchBlock.charAt(i) == toSearchText.charAt(0)) {
                System.out.println("found first char- Starting check loop." + i + j + "::" + count);
                for (j = i; j < i + toSearchText.length(); j++) {
                    System.out.println("J" + j + " II " + innerIndex);
                    if (searchBlock.charAt(j) == toSearchText.charAt(innerIndex)) {
                        innerIndex++;
                        count++;
                        System.out.println("found char:" + innerIndex + " - " + searchBlock.charAt(j));
                    } else {
                        System.out.println("Not the word");
                        break;
                    }
                }
            }
            System.out.println(i);
            System.out.println(j);

            if (count == toSearchText.length()) {
                if (searchBlock.substring(i, j).equals(toSearchText)) {
                    System.out.println(searchBlock.substring(i, j) + " and " + toSearchText);
                    System.out.println("focusing");
                    ClientWindow.mainText.requestFocusInWindow();
                    ClientWindow.mainText.select(i, j);
                    count = 0;
                    innerIndex = 0;
                    index = i + toSearchText.length();
                    if (index > searchBlock.length()) {
                        index = 0;
                    }
                    break;
                }
            } else {
                System.out.println("focus refused");
            }
        }
        System.out.println("Search Finished");
    }
}                                     
private void nextButtonActionPerformed(java.awt.event.ActionEvent evt){
toSearchText=searchText.getText();
如果(!toSearchText.equals(“”){
for(int i=index;isearchBlock.length()){
指数=0;
}
打破
}
}否则{
System.out.println(“焦点被拒绝”);
}
}
System.out.println(“搜索完成”);
}
}                                     

好的,为了解决每行上都有额外索引的问题,我编写了一个方法来计算行数,然后从索引中减去该值

private int checkLine(int position){
    int counter = 0;
    Scanner text = new Scanner(searchBlock.substring(0,position));

    while(text.hasNextLine()){
        counter++;
        text.nextLine();
    }
    return counter - 1;
}