我正在研究学生注册系统。我有一个带有studentname,studentnumber和学生成绩的文本文件,存储在每一行中,例如:
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");
}
答案 0 :(得分:1)
问题在于Scanner(String)
构造函数:
public Scanner(java.lang.String source)
构造一个新的扫描仪,生成从中扫描的值 指定字符串。
参数:source - 要扫描的字符串
它对文件一无所知,只是关于字符串。因此,此Scanner
实例可以(通过nextLine()
调用)为您提供的唯一一行是file.txt
。
简单的测试将是:
Scanner scanner = new Scanner("any test string");
assertEquals("any test string", scanner.nextLine());
您应该使用Scanner
类的其他构造函数,例如:
Scanner(InputStream)
Scanner(File)
Scanner(Path)
答案 1 :(得分:0)
您已拥有包含整行的变量。只需打印出来就像这样:
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");
}