Java 如何检查输入(整数)是否与数组中存在的另一个值(整数)匹配?
我刚刚学习了数组,想构建一个简单的程序,在这个程序中,我使用do-while循环只接受数组中输入的数字,但是我发现这个问题有点困难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 {
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);
}
}