2014-03-29 27 views
-2

我在我的程序中添加了一個包含字符串值的數組,其中我想添加一個else語句,以便如果有人輸入一個未包含在該數組中的值,將會打印出消息invalid entry如何使用else語句來檢查字符串條目

我已經在程序中寫過這個,但是如果輸入了正確的值,那麼當我運行代碼時仍然會出現無效條目。

輸入您的姓名 巴里 您已通過驗證,你可以使用電梯

無效項

無效項

無效項

這是我得到

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(); 
    for (int i = 0; i < name.length; i++) { 
     if(name[i].equals(name1)) { 
     System.out.println("you are verified you may use the lift"); 
     }else{System.out.println ("Invalid entry"); 
    } 
} 

回答

3

代替循環陣列上的,你可以只數組轉換到一個列表中使用contains

System.out.println("Enter your name"); 
String name1 = kb.nextLine(); 
if (Arrays.asList(name).contains(name1)) { 
    System.out.println("you are verified you may use the lift"); 
} else { 
    System.out.println ("Invalid entry"); 
} 
1

您可以添加一個布爾變量,並保持有信息,如果用戶已經發現。

試試這個代碼:

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; 
     } 
    } 

    if (b) { 
     System.out.println("Invalid entry"); 
    } 
} 
0

我想這是因爲你如何遍歷和比較。您將輸入的值與for循環進行比較。 Barry不等於「matty」,「olly」或「joey」,但你的for循環仍然比較所有這些。

你的問題是,如果輸出所有比較。

我會建議在循環之前設置一個布爾值,並且如果它找到匹配項 - 將布爾值設置爲true。 然後,當循環結束時,只需檢查布爾值是true還是false,並輸出所需的代碼。

例子:

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 foundMatch = false; 

for (int i = 0; i < name.length; i++) { 
    if(name[i].equals(name1)) 
     foundMatch = true; 
} 
if(foundMatch) 
    System.out.println("you are verified you may use the lift"); 
else 
    System.out.println ("Invalid entry") 

}

0

您可以指定一個boolean值,以節省您的狀態。

boolean contais = false; 
for (int i = 0; i < name.length; i++) { 
    if(name[i].equals(name1)) { 
     contais = true; 
     break;// to stop looping 
    }else{contais = false;} 
} 

if(contais) { 
    System.out.println("you are verified you may use the lift"); 
else { 
    System.out.println ("Invalid entry"); 
} 
0

您的代碼:

if(name[i].equals(name1)) 

試試這個:

 if(name[i].equalsIgnoreCase(name1)) 
相關問題