很抱歉,这里有一个愚蠢的问题,我用谷歌搜索了它,但我搜索的任何内容似乎都在返回使用二进制搜索等的方法,但我需要的实际上更简单。
我有一系列语言。我正在创建一个扫描仪,要求输入。试图使其成为如果用户输入的语言不在数组中,它会显示错误并再次询问。应该很简单,我刚刚画了一个空白。
有人可以帮忙吗?这是我到目前为止!
Scanner scan = new Scanner(System.in);
language = scan.next();
while( language NOT IN ARRAY languages) {
System.out.print("error!");
language = scan.next();
}
答案 0 :(得分:4)
我现在更了解你的问题。您应该使用Set
来确定。但是您需要使用集合的contains()
方法来检查语言是否存在。
Scanner scan = new Scanner(System.in);
language = scan.next();
while(!set.contains(language)) {
System.out.print("error!");
language = scan.next();
}
旧答案,但仍然是相关信息:
您想要使用的是Set
集合类型。集合不允许重复输入。
来自Javadocs:
不包含重复元素的集合。
Set<String> set = new HashSet<String>();
// will not add another entry if set contains language already
set.add(language);
此外,如果您想知道该值是否被拒绝,您可以使用add()方法的返回类型。如果该项不存在则返回true,否则返回false。
答案 1 :(得分:1)
您可以执行以下操作:
public static boolean contains(String language, String[] lang_array) {
for (int i = 0; i < lang_array.length; i++) {
if (lang_array[i].equals(language))
return true;
}
return false;
}
public static void main(String[] args) {
String[] lang_array = {"Java", "Python", "Ruby"};
Scanner scan = new Scanner(System.in);
String language = scan.next();
while(!contains(language, lang_array)) {
System.out.print("error!");
language = scan.next();
}
}
答案 2 :(得分:1)
你可以这样做,你真的需要使用数组:
Arrays.sort(languages);
Scanner scan = new Scanner(System.in);
language = scan.next();
while( Arrays.binarySearch(languages, language) < 0) {
System.out.print("error!");
language = scan.next();
}
答案 3 :(得分:0)
您可以做两件事:
遍历数组并将每个元素的内容与每次添加语言时的内容进行比较。
OR
使用LinkedList或其他一种具有.contains()
方法的Java结构,这在某种程度上会做类似于我在数组中提到的内容。