检查数组中是否存在值

时间:2016-02-25 03:49:49

标签: java arrays

嘿伙计们,我正在修读计算机科学的高中课程,我们刚刚启动了第二个单元阵列,我不知道如何解决问题。

所以我需要制作代码来检查用户输入的值是否在数组中。 所以我到目前为止所得到的是:

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();
    }
}

这是我到目前为止所做的,我不知道如何检查我创建的数组中是否存在此值。我检查了其他结果,但找不到我学习范围内的那些。

那么有没有办法检查用户声明的值是否存在于数组中?

7 个答案:

答案 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.