2014-03-29 28 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)) 
相关问题