根据用户输入测试字符串和整数数组

时间:2014-03-29 13:45:38

标签: java arrays if-statement user-input

我已经为我想要在我的程序中使用的字符串和整数创建了数组,我想使用它们而不是使用

(name.equals "barry"||"matty"
例如,

我想知道如何编写if语句来检查数组中字符串的用户输入。

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

        System.out.println("Enter your name");
        name = kb.nextLine();
        if (name.equals("barry ")|| name.equals("matty" ) || name.equals("olly")||name.equals("joey"))
            System.out.println("you are verified you may use the lift");

        Scanner f = new Scanner(System.in);
        int floor;

        int [] floor = {0,1,2,3,4,5,6,7};

        System.out.println("What floor do you want to go to ");
        floor = f.nextInt();

        if (floor >7)
            System.out.println("Invalid entry");
        else if (floor <= 7)
            System.out.println("Entry valid");
    }
}

5 个答案:

答案 0 :(得分:3)

认为您只是在寻找List.contains - 但当然需要List而不是数组。这里有两个明显的选择。

首先,您可以使用List<String>开头:

List<String> names = new ArrayList<>();
names.add("barry");
names.add("matty");
names.add("olly");
names.add("joey");
...
if (names.contains(name))
{
    ...
}

或者,您可以使用Arrays.asList创建视图:

String[] names = {"barry", "matty", "olly", "joey"}; 
List<String> namesList = Arrays.asList(names);
...
if (namesList.contains(name))
{
}

作为第三种选择,如果你将你的名字数组排序(手动或通过调用Arrays.sort),你可以使用Arrays.binarySearch来尝试找到用户输入的名称:

String[] names = {"barry", "matty", "olly", "joey"}; 
Arrays.sort(names);
...
if (Arrays.binarySearch(names, name) >= 0)
{
    ...
}

答案 1 :(得分:2)

您可以循环遍历数组:

String name = kb.nextLine();
if(contains(name)) {
    System.out.println("you are verified you may use the lift");
}


public boolean contains(String name) {
    String [] names = {"barry", "matty", "olly","joey"}; 
    for (int i = 0; i < names.length; i++) {
        if(names[i].equals(name)) {
            System.out.println("you are verified you may use the lift");
        }
    }

或者您可以使用List.contains(),在这种情况下,您必须在List内添加您的姓名而不是常规数组。

例如:

String[] names = {"barry", "matty", "olly", "joey"}; 
List<String> namesList= Arrays.asList(names);

if (namesList.contains(name)) {
    System.out.println("you are verified you may use the lift");
}

答案 2 :(得分:2)

数组是非常低级的结构,不提供任何方法。您最好使用具有contains()方法的集合:

Set<String> names = new HashSet<>(Arrays.asList(new String[] {"barry", "matty", "olly","joey"}));

if (names.contains(name)) {
    ...
}

由于您似乎并不关心名称的顺序,但只想测试集合是否包含名称,因此HashSet是最佳数据结构:HashSet.contains()以恒定时间运行( O(1)),而List.contains()例如是O(n)。

阅读collections tutorial

答案 3 :(得分:1)

使用ArrayList和List而不是String of String:

List<String>names = new ArrayList<String>(names); 
name = kb.nextLine();
if(names.indexOf(name)>-1)System.out.println("you are verified you may use the lift");

这是因为List中的indexof如果找不到则返回-1或者找到的元素的索引,从0开始。

我认为那也是

if(names.contains(name))System.out.println("you are verified you may use the lift");

作品

答案 4 :(得分:0)

使用for循环

get input
for int i = 0, i < array size i++
if input.equals(array[i]) then do stuff

如果您切换到arraylist,则可以执行if(array.contains(input))