簡體   English   中英

循環永遠持續下去

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM