我试图在提示时提示用户输入他或她的用户名和密码。在他们输入之后我试图用我的源代码存储的文本文件来检查它。
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
我的第一个问题是我不习惯在java中正确存储文本文件。我将文本文件更改为正确的位置后。我能够成功更改useDelimiter行
scan.useDelimiter(",|\n");
现在它成功检查了用户名和密码以及输出
Success
如果输入在文本文件中。
答案 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
}
.....