2014-03-29 43 views
2

我想爲我的程序添加一個循環,以便當用戶輸入不正確的名稱時,它會返回到程序的開頭並要求他們再次輸入其名稱。我想我需要一個do-while循環,但我不知道如何通過if語句和布爾值來實現它。我希望用戶只有三個條目,如果他們錯誤三次,那麼程序關閉。如何使用do-while循環來再次檢查用戶輸入?

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"); 
     } 
    } 
+1

男人,幾分鐘前,你問了一個問題。我給了你一個答案,現在,你在這裏粘貼我的代碼,你又問了... – ruhungry

+0

你需要開始接受答案。 – Salah

+1

@Salah或者我們應該停止給答案;) – ruhungry

回答

1

您可以在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"); 
     } 
    } 
} 

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

1

你可以這樣說:

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) 
1
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 
+0

是的,它的工作.. – user3386829

+0

'binarySearch'只有在'name'數組中的元素排序後才能使用。問題說沒有這樣的限制。 –

+0

如果數組存在於數組中,則返回+ ve值否則返回-ve – loknath

1

用下面的辦法。好的是它是一個乾淨而強大的解決方案。

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."); 
    } 
} 
相關問題