Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.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 - Fatal编程技术网

我想用Java搜索一个文件中的字符串

我想用Java搜索一个文件中的字符串,java,search,Java,Search,我正试图创建这个自我项目,却被卡住了。我正在尝试获取用户输入,搜索包含该输入关键字的字符串[]。如果找到关键字,请在文件中搜索包含该关键字的句子,并返回包含该关键字的整个句子。这应该在for循环中完成吗 public static void parseFile( Scanner searchStr ) throws FileNotFoundException { File file = new File("data.txt"); String [] keywords

我正试图创建这个自我项目,却被卡住了。我正在尝试获取用户输入,搜索包含该输入关键字的字符串[]。如果找到关键字,请在文件中搜索包含该关键字的句子,并返回包含该关键字的整个句子。这应该在for循环中完成吗

  public static void parseFile( Scanner searchStr ) throws FileNotFoundException
{
    File file = new File("data.txt");
        String [] keywords = {" day","What church"," name","Leman", "Secular",   "bugs"};

    Scanner scan = new Scanner(file);
    while( searchStr.hasNext() )
    {

        String line = searchStr.nextLine().toLowerCase().toString();
        final String lineFromFile = scan.nextLine();
        for( String keyword : keywords )
        {
            if( lineFromFile.contains( keyword ) )
            {
                System.out.println( keyword );
            }
        }

    scan.close();
    //searchStr.close();

    }
}
这里是我调用parseFile()的地方,但出于某种原因,它不会搜索该文件

                    parseFile(currentkeyword);
假设我有一个名为“data.txt”的文本文件 它有几个要素。 1.巴格斯是个有趣的家伙 2.他的名字写在墙上

如有任何建议,将不胜感激

Scanner scan = new Scanner(file);
while( searchStr.hasNext() )

使用两种不同的扫描仪。看起来,
searchStr
从未收到要查看的文件,因此它从未经过循环。

您忘记将所有关键字设置为小写:

String[]关键字={“day”、“what church”、“name”、“leman”、“世俗”、“bugs”}

另外,您使用了错误的扫描仪


searchStr=新扫描仪(文件)

你有你的
while(searchStr.hasNext)
如果你想搜索文件,你应该在文件扫描器上循环(即
while(scan.hasNext())
…我不确定您的另一个扫描仪是什么searchStr它是用户输入的,因为我只会将它存储在字符串中,然后将字符串传递给您的
parseFile
方法,而不是扫描仪…所以最好存储整个输入,然后将其传递到字符串中?然后在字符串中搜索关键字,然后搜索文件?我试图在输入中搜索关键字,然后同时搜索文件,但从我得到的反馈来看,这是不可能的。最好使用包含您试图搜索的文件的扫描仪,而不是没有输入的扫描仪。不清楚您试图做什么用户从键盘?您应该传入一个包含用户输入的字符串。然后首先搜索用户输入,查看它是否包含关键字。您可以在关键字上循环并使用
userinput.contains(关键字)
如果它包含关键字,则保存它以搜索文件。然后在文件扫描器上循环并搜索上面找到的关键字…您可能还需要正则表达式来决定什么是“句子”,什么不是。。。