嘿伙计们,我正在修读计算机科学的高中课程,我们刚刚启动了第二个单元阵列,我不知道如何解决问题。
所以我需要制作代码来检查用户输入的值是否在数组中。 所以我到目前为止所得到的是:
import java.util.Scanner;
public class array1 {
public static void main(String[]args) {
int [] arraynumbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Scanner sc = new Scanner(System.in);
System.out.println("Enter a value");
int num = sc.nextInt();
}
}
这是我到目前为止所做的,我不知道如何检查我创建的数组中是否存在此值。我检查了其他结果,但找不到我学习范围内的那些。
那么有没有办法检查用户声明的值是否存在于数组中?
答案 0 :(得分:1)
你会做什么,用纸和笔留出编程来手动执行该操作?考虑到列表可能比10个元素大得多,您需要一个系统的方法。
您可能会一个接一个地查看列表中的每个元素,并将该元素与您要查找的数字进行比较。
查看列表的每个元素就是一个循环。
测试和比较通常涉及关系运算符,例如==
或<
因此,您需要循环遍历所有元素,使用正确的运算符将它们与您要查找的值进行比较,并测试该比较的结果:
for (int value: arraynumbers) {
if (value == num) {
// Here you found the number you are looking for
}
}
答案 1 :(得分:0)
一种方法是使用for循环:
//conventional for loop
for (int i = 0; i < arraynumbers.length; i++)
{
if (arraynumbers[i] == num)
System.out.print(num + " found!");
}
//"for each" loop
for (int number : arraynumbers)
{
if (number == num)
System.out.print(num + " found!");
}
答案 2 :(得分:0)
喜欢这个。这很有效。可能试一试。
import java.util.Scanner;
public class array1 {
public static void main(String[] args) {
int[] arraynumbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Scanner sc = new Scanner(System.in);
System.out.println("Enter a value");
int num = sc.nextInt();
for (int x = 0; x < arraynumbers.length; x++) {
if (arraynumbers[x] == num) {
System.out.println("Value exists in array!");
}else{
System.out.println("Value doesn't exists in array!");
}
}
}
}
答案 3 :(得分:0)
System.out.println(boolean found = Arrays.stream(arraynumbers).anyMatch(xh -> xh == num ));
输出:真
我正在努力减少代码行。希望我的工作有所帮助。快乐编码。
答案 4 :(得分:0)
我会使用增强的for循环
public static bool findNum() {
int [] arraynumbers = {1,2,3,4,5,6,7,8,9,10};
Scanner sc = new Scanner(System.in);
System.out.println("Enter a value: ");
int num = sc.nextInt();
boolean found = false;
for (int i : arraynumbers) {
if (num == i) {
found = true;
}
}
return found;
}
基本上,增强的for循环执行以下操作:
初始化一个int i
一次移动arraynumbers数组一个元素,将数组项存储在i
中
如果输入等于当前数组项,则将found设置为true
然后该方法返回true
我比其他语言更喜欢Java增强for循环的语法,但对于初学者来说,它可能有点难以理解。可以这样想:从数组中的第一个元素开始,用标签&#39; i&#39;表示该项,测试该项是否等于输入,如果是,则将found的值设置为true 。
在for循环中使用array.length也很好,但是输入要少得多,而在较大的应用程序中则有助于提高加载速度。
答案 5 :(得分:0)
我根据Java 8 Lambda Expressions提出了一个非常明确的解决方案。
Arrays.stream(arraynumbers).filter(x -> x == num).forEach(System.out::println);
我做了一点演示,你可以在这里测试一下: Ideone
答案 6 :(得分:0)
如果您想在数组(索引)中找到 where ,那么您可以循环遍历数组,创建一个在找到用户编号后终止的条件,然后打印数字及其各自的指数。
如果您还没有学到这一点,那么数组将从零开始编入索引。所以,如果您的数组是
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
那么指数是
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
import java.util.Scanner;
public class Array1 {
public static void main(String[] args) {
int[] arrayNumbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
Scanner sc = new Scanner(System.in);
System.out.print("Enter a value: ");
int num = sc.nextInt();
boolean match = false;
for (int i = 0; i < arrayNumbers.length; i++) {
if (num == arrayNumbers[i]) { //you're checking if your user's 'num' is the same as a certain number in the array with the '==' operator
match = true; //assign your boolean to true since it's found
System.out.println("Found " + num + " at index " + i + "!"); //print their number and the index
break; //no need to loop through the entire array. if you keep going with programming, you'll learn about efficiency more in depth down the road. :)
}
}
if(!match) { //Keep this outside the for loop, otherwise it will print this statement arrayNumbers.length number of times, in this case 10 times.
System.out.println("Did not find " + num + " in the array.");
}
}
}
正确和错误用户输入的输出:
Enter a value: 7
Found 7 at index 6! //see how it gives the index?
Enter a value: 45
Did not find 45 in the array. //only prints once since it wasn't in the for loop.