java用户名和密码输入验证

时间:2017-12-06 18:18:14

标签: java

我试图在提示时提示用户输入他或她的用户名和密码。在他们输入之后我试图用我的源代码存储的文本文件来检查它。

public static void getCreds()
{
    String userName;
    String userPass;

    Scanner credsInput = new Scanner(System.in);

    System.out.print("Please enter your username: ");
        userName = credsInput.nextLine();
    System.out.print("Please enter your password: ");
        userPass = credsInput.nextLine();

    boolean found = false;
    String tempUser;
    String tempPass;
    //String fileName = "credentials.txt";

    try
    {
        // Scanner scan = new Scanner(new BufferedReader(new FileReader("credentials.txt")))
        Scanner scan = new Scanner(new File("credentials.txt"));
        scan.useDelimiter(",");

        while (scan.hasNext() && !found)
        {
            tempUser = scan.next();
            tempPass = scan.next();

            if(tempUser.trim().equals(userName.trim()) && tempPass.trim().equals(userPass.trim()))
            {
                found = true;
                System.out.println("success");
            }

        }

        scan.close();
    }

    catch (Exception e)
    {
        System.out.println("invalid");
    }


}

这是文本文件的内容。

user1,pass1
bob,1234
jim,1234

我不相信它实际上是从文件中读取,但我可能错了,任何帮助都表示赞赏。

修改

我忘记了输出。当我编译并运行代码时,它会成功请求用户名和输出,无论我输入的是否正确,它都会抛出异常并显示

invalid

编辑#2

我的第一个问题是我不习惯在java中正确存储文本文件。我将文本文件更改为正确的位置后。我能够成功更改useDelimiter行

scan.useDelimiter(",|\n");

现在它成功检查了用户名和密码以及输出

Success

如果输入在文本文件中。

2 个答案:

答案 0 :(得分:0)

我建议使用hasNextLine()和nextLine(),因为您知道用户名和密码对在各行上。

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/action_search"
          android:title="@string/menu_search"
          android:icon="@drawable/ic_search" />
    <item android:id="@+id/action_settings"
          android:title="@string/menu_settings"
          android:icon="@drawable/ic_add" />
    <item android:id="@+id/action_navigation"
          android:title="@string/menu_navigation"
          android:icon="@drawable/ic_action_navigation_menu" />
</menu>

答案 1 :(得分:-1)

删除用作分隔符的昏迷,因为它会将1234附加到回车符\n作为标记,我在我的IDE上尝试过这样:

   //scan.useDelimiter(",");

        while (scan.hasNext() && !found)
        {
            String line  = scan.nextLine();
            tempUser = line.split(",")[0];
            tempPass = line.split(",")[1];
            //..... complete the logic as it was

          }
         .....