Java数组问题
对不起,这里有个愚蠢的问题,我已经在谷歌上搜索过了,但我搜索的任何东西似乎都返回了使用二进制搜索等的方法,但我需要的实际上要简单得多 我有一系列的语言。我正在创建一个扫描仪,请求输入。尝试将其设置为如果用户输入的语言不在数组中,则会显示错误并再次询问。应该很简单,我只是画了一个空白 有人能帮忙吗?这是我到目前为止所拥有的Java数组问题,java,arrays,search,Java,Arrays,Search,对不起,这里有个愚蠢的问题,我已经在谷歌上搜索过了,但我搜索的任何东西似乎都返回了使用二进制搜索等的方法,但我需要的实际上要简单得多 我有一系列的语言。我正在创建一个扫描仪,请求输入。尝试将其设置为如果用户输入的语言不在数组中,则会显示错误并再次询问。应该很简单,我只是画了一个空白 有人能帮忙吗?这是我到目前为止所拥有的 Scanner scan = new Scanner(System.in); language = scan.next(); while(
Scanner scan = new Scanner(System.in);
language = scan.next();
while( language NOT IN ARRAY languages) {
System.out.print("error!");
language = scan.next();
}
我现在更明白你的问题了。你肯定应该使用一个新的。但是您需要使用集合的
contains()
方法来检查该语言是否存在
Scanner scan = new Scanner(System.in);
language = scan.next();
while(!set.contains(language)) {
System.out.print("error!");
language = scan.next();
}
旧答案,但仍有相关信息:您要使用的是集合类型。集合不允许重复条目。 从Javadocs: 不包含重复元素的集合
Set Set=newhashset();
//如果集合已包含语言,则不会添加其他项
set.add(语言);
另外,如果您想知道该值是否被拒绝,可以使用add()方法的返回类型。如果项目不存在,则返回true;否则返回false。您可以执行以下操作:
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();
}
}
公共静态布尔包含(字符串语言,字符串[]lang\u数组){
for(int i=0;i
您可以做两件事:
或者迭代数组,并将每个元素上的内容与每次添加语言时尝试查看的内容进行比较
或
使用LinkedList或具有
.contains()
方法的其他类型的Java结构,这将在某种程度上执行与我提到的数组类似的操作。您可以这样做,因为您确实需要使用数组:
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();
}
Arrays.sort(语言);
扫描仪扫描=新扫描仪(System.in);
language=scan.next();
while(Arrays.binarySearch(languages,language)<0){
系统输出打印(“错误!”);
language=scan.next();
}
这甚至不是有效的Java代码……因此问题在于尝试确定某个值是否已经在数组中,即在数组中搜索特定值?我意识到这是它的psuedo代码。指出我说的有效代码在哪里?伯特F-是的,就是它!:)我有一个字符串,由用户输入,然后我搜索数组,看看它是否包含在其中。这是家庭作业吗?是否只需要使用数组操作?使用set的奇怪方式;为什么不直接使用contains()方法呢?这样他就可以积累集合中的所有输入,而这不是他想要的。这几乎是一个完整的答案。我还要指出Set类上的contains(“xyz”)api,它可以用来驱动该循环。这是在(!Arrays.binarySearch(languages,language)<0时发生的吗?既然不能在int上使用not,并且该方法返回int?@user476033谢谢。我修好了。
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();
}