Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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_File_Search_Text_Line - Fatal编程技术网

Java 在文件中搜索字符串并返回该特定行

Java 在文件中搜索字符串并返回该特定行,java,file,search,text,line,Java,File,Search,Text,Line,我正在研究学生注册系统。我有一个文本文件,每行存储有学生姓名、学生编号和学生成绩,例如: name1,1234,7 name2,2345,8 name3,3456,3 name4,4567,10 name5,5678,6 如何搜索一个名称,然后返回整个句子?在查找名称时,它不会得到任何匹配项 我当前的代码如下所示: public static void retrieveUserInfo() { System.out.println("Please enter username

我正在研究学生注册系统。我有一个文本文件,每行存储有学生姓名、学生编号和学生成绩,例如:

 name1,1234,7
 name2,2345,8
 name3,3456,3
 name4,4567,10
 name5,5678,6
如何搜索一个名称,然后返回整个句子?在查找名称时,它不会得到任何匹配项

我当前的代码如下所示:

public static void retrieveUserInfo()
{
    System.out.println("Please enter username"); //Enter the username you want to look for
    String inputUsername = userInput.nextLine();


    final Scanner scanner = new Scanner("file.txt");
    while (scanner.hasNextLine()) {
       final String lineFromFile = scanner.nextLine();
       if(lineFromFile.contains(inputUsername)) { 
           // a match!
           System.out.println("I found " +inputUsername+ " in file " ); // this should return the whole line, so the name, student number and grade
           break;
       }
       else System.out.println("Nothing here");
    }
while (scanner.hasNextLine()) {
       final String lineFromFile = scanner.nextLine();
       if(lineFromFile.contains(inputUsername)) { 
           // a match!
           System.out.println("I found " +lineFromFile+ " in file " ); 
           break;
       }
       else System.out.println("Nothing here");
    }

您已经有了保存整行的变量。按如下方式打印:

public static void retrieveUserInfo()
{
    System.out.println("Please enter username"); //Enter the username you want to look for
    String inputUsername = userInput.nextLine();


    final Scanner scanner = new Scanner("file.txt");
    while (scanner.hasNextLine()) {
       final String lineFromFile = scanner.nextLine();
       if(lineFromFile.contains(inputUsername)) { 
           // a match!
           System.out.println("I found " +inputUsername+ " in file " ); // this should return the whole line, so the name, student number and grade
           break;
       }
       else System.out.println("Nothing here");
    }
while (scanner.hasNextLine()) {
       final String lineFromFile = scanner.nextLine();
       if(lineFromFile.contains(inputUsername)) { 
           // a match!
           System.out.println("I found " +lineFromFile+ " in file " ); 
           break;
       }
       else System.out.println("Nothing here");
    }

问题在于
扫描仪(字符串)
构造函数,因为它:

公共扫描程序(java.lang.String源代码)

构造一个新的扫描程序,该扫描程序生成从 指定的字符串

参数:源-要扫描的字符串

它对文件一无所知,只知道字符串。因此,这个
Scanner
实例(通过
nextLine()
调用)可以给您的唯一一行是
file.txt

简单的测试是:

Scanner scanner = new Scanner("any test string");
assertEquals("any test string", scanner.nextLine());
您应该使用
Scanner
类的其他构造函数,例如:

Scanner(InputStream)
Scanner(File)
Scanner(Path)

语言=Java?如果是,请包含在标签中。另外,
lineFromFile
似乎已经包含了您的整行内容,所以只需打印即可……添加了标记和打印的lineFromFile,但仍然找不到匹配项。这可能与文本文件中的逗号分隔有关吗?如果添加
System.out.println(lineFromFile)在您的
if
语句之后,您得到了什么输出?while(scanner.hasNextLine()){final String lineFromFile=scanner.nextLine();if(lineFromFile.contains(inputUsername)){//a match!System.out.println(lineFromFile);break;}else System.out.println(“此处无”);此处不返回任何内容您是否知道这种灰显区分大小写?您可能需要使用
lineFromFile.toLowerCase().contains(inputUserName.trim().toLowerCase())