Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查输入(整数)是否与数组中存在的另一个值(整数)匹配?_Java - Fatal编程技术网

Java 如何检查输入(整数)是否与数组中存在的另一个值(整数)匹配?

Java 如何检查输入(整数)是否与数组中存在的另一个值(整数)匹配?,java,Java,我刚刚学习了数组,想构建一个简单的程序,在这个程序中,我使用do-while循环只接受数组中输入的数字,但是我发现这个问题有点困难 Scanner input = new Scanner(System.in); int[] values; values = new int[5]; values[0] = 16; values[1] = 10; values[2] = 11; values[3] = 14; values[4] = 17; int value; do {

我刚刚学习了数组,想构建一个简单的程序,在这个程序中,我使用do-while循环只接受数组中输入的数字,但是我发现这个问题有点困难

Scanner input = new Scanner(System.in);
int[] values; 
values = new int[5];
values[0] = 16;
values[1] = 10;
values[2] = 11;
values[3] = 14;
values[4] = 17;
    int value;
    do {
    System.out.println("Enter a number:");
        value = input.nextInt();    
    }
    while(value != values[]);
其余的将是“if”语句,其中包含一些输出文本,这些文本基于数组中输入的数字。“while”条件在我输入时出现错误


编辑:因为这在java中是不可能的,所以我可以直接编写=16,10,11,14,17没有错误?数组在该条件下无法工作,因此我仍在寻找在条件中包含多个数字的方法

一个
int
与一个
int[]
循环的终止条件不同:

while(value != values[])

Java是不合法的。不能将
int
值与数组进行比较,也不能使用
值[]
引用数组。我不知道您试图实现什么,但您需要在终止条件中添加特定的下标或以其他方式修改它。

正如您所见,在(value!=values[])时写入是不可能的,但您可以在数组中搜索值或检查值是否包含在列表中:

——第一条路

使用整数列表:

import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;

public class InArrayWithAsListContains {

    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        int value=0;
        List<Integer> values = new ArrayList<Integer>();

        values.add(16);
        values.add(10);
        values.add(11);
        values.add(14);
        values.add(17);    

        do {
            System.out.println("Enter a number:");
            value = input.nextInt();    
        } while(!values.contains(value)); 
    }
}
import java.util.Scanner;
导入java.util.List;
导入java.util.ArrayList;
NarayWithAsListContains中的公共类{
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(System.in);
int值=0;
列表值=新的ArrayList();
增加(16);
增加(10);
增加(11);
增加(14);
增加(17);
做{
System.out.println(“输入一个数字:”);
value=input.nextInt();
}而(!values.contains(value));
}
}
使用以int[]开头的列表的变体

int[] arr = new int[] {16,10,11,14,17};        

// int[] into List<Integer> conversion
for (int i : arr) values.add(i);
int[]arr=newint[]{16,10,11,14,17};
//int[]转换为列表转换
对于(int i:arr)值,添加(i);
——第二条路

仅使用数组和array.binarySearch(值、键)

import java.util.Scanner;
导入java.util.array;
公共课程{
公共静态void main(字符串[]args)
{
扫描仪输入=新扫描仪(System.in);
int值=0;
int[]值={16,10,11,14,17};
数组。排序(值);
做{
System.out.println(“输入一个数字:”);
value=input.nextInt();
}while(Arrays.binarySearch(value,value)<0);
}
}

“while”条件在错误中出现“每当您遇到错误或异常时,您应该在问题中发布它们。提示:尝试编写一个帮助器方法来检查int是否在数组中,并在循环条件中使用它。使用Arrays.binarySearch()搜索值[]中的值,如while(Arrays.binarySearch(values,value)<0) ... 在我的回答中。。。或者{}while(!values.contains(value)),但是有一个整数列表:List——测试和更新的解决方案***不,不是。如果OP使用
int[]
(他这样做了),那么你的想法就行不通了。而且你在没有测试的情况下发布代码是非常。。。糟糕。你的编辑告诉我你不知道我在说什么:这一行
Arrays.asList(values).contains(value)
对于基本数组毫无意义。所以花点时间测试你的代码。多亏了@Tom,现在解决方案已经更新和测试了
import java.util.Scanner;
import java.util.Arrays;

public class Program {

    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
        int value=0;
        int[] values = {16,10,11,14,17};

        Arrays.sort(values);

        do {
            System.out.println("Enter a number:");
            value = input.nextInt();    
        } while(Arrays.binarySearch(values, value) < 0); 
    }
}