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_Arraylist_Indexof - Fatal编程技术网

Java:在多个文件中搜索一个单词

Java:在多个文件中搜索一个单词,java,search,arraylist,indexof,Java,Search,Arraylist,Indexof,基本上,我需要检查一个单词在多个文件中的出现情况。 此外,一个单词可能多次存在于单个文本文件中。 我想为每个文件保存一个单词的位置;所以我写了下面的代码: public static void findWord(String word, File file){ try{ BufferedReader input = new BufferedReader( new InputStreamReader(

基本上,我需要检查一个单词在多个文件中的出现情况。
此外,一个单词可能多次存在于单个文本文件中。
我想为每个文件保存一个单词的位置;所以我写了下面的代码:

    public static void findWord(String word, File file){
        try{
             BufferedReader input = new BufferedReader(
                        new InputStreamReader(
                        new FileInputStream(file)));
            String line;
            ArrayList<Integer> list=new ArrayList<Integer>();
            while((line=input.readLine())!=null){
                if(line.indexOf(word)>-1){
                    list.add(line.indexOf(word));
                }
            }
           System.out.println(file +": "+ list);

            input.close();
        }
        catch(Exception ex){
            ex.printStackTrace();
        }
    }
publicstaticvoidfindword(字符串字,文件){
试一试{
BufferedReader输入=新BufferedReader(
新的InputStreamReader(
新文件输入流(文件));
弦线;
ArrayList=新建ArrayList();
而((line=input.readLine())!=null){
if(行索引of(word)>-1){
list.add(line.indexOf(word));
}
}
System.out.println(文件+“:”+列表);
input.close();
}
捕获(例外情况除外){
例如printStackTrace();
}
}

我的代码在第一次成功发生后无法添加到列表中。因此,每个数组中只有一个元素。
我怎么修理它?
P.S我的文本文件由一行组成

修复方法如下(用以下内容替换while循环):


而((line=input.readLine())!=null)
{
int指数=-1;
而((index=line.indexOf(word,index+1)>-1)
{
list.add(索引);
}
}

修复方法如下(用以下内容替换while循环):

而((line=input.readLine())!=null)
{
int指数=-1;
而((index=line.indexOf(word,index+1)>-1)
{
list.add(索引);
}
}

您是否意识到,即使您的代码实际上也在行中存储单词位置,而不是整个文件?而且行“line.lastIndexOf(word);”也没有效果。糟糕的是,我忘了提到我的文本文件由一行组成,我已将CVS转换为txt。@user1115605:您不想添加line.lastIndexOf(word)吗;也保存到列表中,以保存列表中最后出现的单词?Regardsys,line.lastIndexOf(单词)没有效果,我试着在字符串中继续移动直到文件结束。我不知道怎么做,所以我只是改进了一下。你需要另一个循环来实现这一点-见下面的答案。你知道吗,即使你的代码实际上也在行中存储单词位置,而不是整个文件?还有行“line.lastIndexOf(word);”没有效果。我的错,我忘了提到我的文本文件由一行组成,我已将CVS转换为txt。@user1115605:您不打算将line.lastIndexOf(word);也添加到列表中,以保存列表中最后出现的word吗?Regardsys,line.lastIndexOf(word)没有效果,我尝试了一些类似于在字符串中继续移动直到文件结束的操作。我不知道如何做,所以我只是在改进。您需要另一个循环来实现这一点-请参见下面的答案 while ((line = input.readLine ()) != null) { int index = -1; while ((index = line.indexOf (word, index + 1) > -1) { list.add (index); } }