簡體   English   中英

如何使用do-while循環再次檢查用戶輸入?

[英]How to use do-while loop to check user input again?

我想在程序中添加一個循環,以便當用戶輸入錯誤的名稱時,它可以返回到程序的開頭,並要求他們再次輸入其名稱。 我認為我需要一個do-while循環,但是我不確定如何使用if語句和已經包含的布爾值來實現它。 我希望用戶只有三個條目,如果他們輸入了3次錯誤,則程序將關閉。

import java.util.Scanner;

public class Username
{
  public static void main(String[] args)
  {
    {
      Scanner kb = new Scanner(System.in);
      // array containing usernames
      String[] name = {"barry", "matty", "olly", "joey"}; // elements in array


      System.out.println("Enter your name");
      String name1 = kb.nextLine();
      boolean b = true;
      for (int i = 0; i < name.length; i++)
      {
        if (name[i].equals(name1))
        {
          System.out.println("you are verified you may use the lift");
          b = false;
          break;// to stop loop checking names
        }
      }

      if (b)
      {
        System.out.println("Invalid entry 2 attempts remaining, try again");
      }
    }

您可以在while循環中使用條件。 類似於以下內容:

boolean b = false;
while(!b){
    System.out.println("Enter your name");
    String name1 = kb.nextLine();
    for (int i = 0; i < name.length; i++) {
        if (name[i].equals(name1)) {
            b = true;
            System.out.println("you are verified you may use the lift");
        }else{
            System.out.println("Invalid entry 2 attempts remaining, try again");
        }
    }
}

如果滿足名稱條件,則循環將退出,否則將循環。

您可以這樣做:

int count = 0;
point:
do {
    System.out.println("Enter your name");
    String name1 = kb.nextLine();
    boolean b = true;
    for (int i = 0; i < name.length; i++) {
        if (name[i].equals(name1)) {

            System.out.println("you are verified you may use the lift");
            b = false;
            break point;// to stop loop checking names
        }
    }

    if (b) {
        count++;
        System.out.println("Invalid entry 2 attempts remaining, try again");
    }
while(!b || count <=3)
package com.loknath.lab;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

public class User1 {
public static void main(String[] args) {

    Scanner kb = new Scanner(System.in);
    // array containing usernames
    String[] name = {"zerr", "barry", "matty", "olly", "joey" }; // elements
    String []temp=name;
    Arrays.sort(temp);
    while (true) {

        System.out.println("Enter your name");
        String name1 = kb.nextLine();

        if (Arrays.binarySearch(temp,name1)>=0) {
            System.out.println("you are verified you may use the lift");
            break;
        } else {
            System.out.println("Not a verified user try again!");
        }

    }
    System.out.println("Done");
}

 }

產量

  Enter your name
  loknath
  Not a verified user try again!
  Enter your name
  chiku
  Not a verified user try again!
  Enter your name
  zerr
  you are verified you may use the lift
  Done

使用以下方法。 好在,這是一個干凈而強大的解決方案。

import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class AccessPoint
{
  private Scanner scanner;
  private List<String> usernames;

  public AccessPoint()
  {
    scanner = new Scanner(System.in);
    usernames = Arrays.asList("Barry", "Matty", "Olly", "Joey");

    if (tryAccessForTimes(3))
    {
      allowAccess();
    }
    else
    {
      denyAccess();
    }

    scanner.close();
  }

  public static void main(String[] args)
  {
    new AccessPoint();
  }

  private boolean tryAccessForTimes(int times)
  {
    boolean accessAllowed = false;

    for (int tryIndex = 1; tryIndex <= times && !accessAllowed; tryIndex++)
    {
      String userInput = getUserName();

      for (String userName : usernames)
      {
        if (userName.equals(userInput))
        {
          accessAllowed = true;
          break;
        }
      }

      if (!accessAllowed)
      {
        printNumberOfTriesLeft(times, tryIndex);
      }
    }

    return accessAllowed;
  }

  private void printNumberOfTriesLeft(int times, int tryIndex)
  {
    int triesLeft = times - tryIndex;

    if (triesLeft != 0)
    {
      System.out.println("You have " + triesLeft
        + (triesLeft == 1 ? " try" : " tries") + " left.");
    }
  }

  private String getUserName()
  {
    System.out.print("Enter Username: ");
    return scanner.nextLine();
  }

  private void allowAccess()
  {
    System.out.println("Access Granted. Allowed to use lift.");
  }

  private void denyAccess()
  {
    System.out.println("Access Denied.");
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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