[英]Loop keeps going on forever
我的代碼有點麻煩。 我正在嘗試從用戶那里獲取用戶名和密碼,並讀取包含多個用戶名和密碼的文件。 如果用戶名和密碼不在同一行,則用戶將再嘗試2次以使其正確無誤,否則,程序將退出。 目前,該代碼表明即使用戶輸入正確的信息,用戶名和密碼也是錯誤的,並且提示用戶3次以上。 有人可以幫忙嗎? 我有下面的代碼。 我沒有發布標題,因為我認為這可能會有些混亂。 謝謝!
//*****Prompts user to enter in user name and password
System.out.println("Please enter in your user name: ");
userName = keyboard.nextLine();
System.out.println("Please enter in your password: ");
password = keyboard.nextLine();
while (userName.equals("done"))
{
System.out.println("You entered done. Now exiting the test");
System.exit(0);
}
while (userInfoScanner.hasNext())
{
String userInfoLine = userInfoScanner.nextLine();
String [] userInfoArr = userInfoLine.split ("\t");
// for (int i=0; i<3; i++)
//{
if(userInfoArr[0].equalsIgnoreCase(userName) && userInfoArr[1].equals(password))
{
System.out.println("Correct");
}
while (!userInfoArr[0].equalsIgnoreCase(userName) && !userInfoArr[1].equals(password))
{
for (int i=0; i<3; i++)
{
System.out.println();
System.out.println("Incorrect. Please enter in the correct user name: ");
userName = keyboard.nextLine();
System.out.println("Please enter in the correct password: ");
password = keyboard.nextLine();
}
}
}
while (userInfoScanner.hasNext())
循環取決於用戶輸入,但用戶可以始終編寫某些內容,因此,此while循環將永遠存在。
您可以寫得更簡短一些。
Scanner keyboard = new Scanner(System.in);
System.out.println("Please enter in your user name: ");
String userName = keyboard.nextLine();
System.out.println("Please enter in your password: ");
String password = keyboard.nextLine();
while (userName.equals("done"))
{
System.out.println("You entered done. Now exiting the test");
System.exit(0);
}
System.out.println("Enter login and password");
String userInfoLine = keyboard.nextLine();
String [] userInfoArr = userInfoLine.split (" "); // i changed separation from \t to simple space
if(userInfoArr[0].equalsIgnoreCase(userName) && userInfoArr[1].equals(password))
{
System.out.println("Correct");
}
while (!userInfoArr[0].equalsIgnoreCase(userName) && !userInfoArr[1].equals(password))
{
System.out.println();
System.out.println("Incorrect. Please enter in the correct user name: ");
userName = keyboard.nextLine();
System.out.println("Please enter in the correct password: ");
password = keyboard.nextLine();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.