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())