首页 > 解决方案 > Java 扫描器类从文本文件中读取制表符分隔的字符串

问题描述

我是一名学习 Java 编码的学生。我正在尝试检查文本文件中的用户名和密码。如果文本文件包含用户名,则接下来的 3 个字段将分配给变量。

文本文件有 4 个制表符分隔的字段和 5 个唯一行。

如果我从文本文件的第一行输入用户名和密码,那么我可以获得布尔值以返回 true。如果我输入任何其他用户名或密码,布尔值将保持为假。我使用 print 方法,可以看出 while 循环遍历整个文件。

我试图弄清楚为什么文本文件的其他行没有与用户名或密码变量进行比较。

我的代码:

while (inFS.hasNext() && !userGood && !passGood) {
    credString = inFS.next();
    System.out.println(credString);

    if (userName.equals(credString)) {
        userGood = true;
        System.out.println("*****userGood TRUE");
        encryptedPass = inFS.next();
        unencryptedPass = inFS.next();
        userRole = inFS.next();
        if (sb.toString().equals(encryptedPass)){
            passGood = true;
            System.out.println("*****passGood TRUE");
            break;
      }                                                           
 }                       

}

标签: java

解决方案


问题是 next() 方法不会跳过一行,因此您应该在进行下一个 while 迭代之前调用 nextLine()。


推荐阅读