Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Arrays_Search - Fatal编程技术网

如果在数组中找到值,则返回Java索引

如果在数组中找到值,则返回Java索引,java,arrays,search,Java,Arrays,Search,我试图在数组中找到一个值,我确信这个值只存在一次,所以我试图找到这个值并返回存储它的数组的索引,如果没有找到,返回-1 这就是我想做的: static Integer[] accs = new Integer[20]; public static int search() { Integer[] numbers; numbers = accs; Integer key; Scanner sc = new Scanner(S

我试图在数组中找到一个值,我确信这个值只存在一次,所以我试图找到这个值并返回存储它的数组的索引,如果没有找到,返回-1 这就是我想做的:

static Integer[] accs = new Integer[20];
 public static int search()
    {
        Integer[] numbers;
        numbers = accs;
        Integer key;
        Scanner sc = new Scanner(System.in);
         System.out.println("Enter the Account Number:");        
         key = sc.nextInt();

        for (Integer index = 0; index < numbers.length; index++)
      {
           if ( numbers[index] == key )
                 return index;  //We found it!!!
      }
     // If we get to the end of the loop, a value has not yet
     // been returned.  We did not find the key in this array.
     return -1;

    }

即使我知道数组中存在该值,当我运行此命令时,也不会显示任何内容。我进行了调试,然后发现键变量的值与我键入的值不符。有什么问题吗?

整数是一个对象,因此必须使用equals方法。试试数字[index].equalskey。

整数是一个对象,因此必须使用equals方法。尝试数字[index].equalskey.

您的数组正在存储Integer,这是一个java对象,要测试java对象的相等性,您需要调用方法而不是==


在您的例子中,我建议您使用int数组而不是Integer,它在内存中更轻,支持==并且您没有使用Integer的任何功能,所以这里不需要它们。

您的数组正在存储Integer,这是一个java对象,为了测试java对象的相等性,您需要调用method而不是==

在您的情况下,我建议您使用int数组而不是Integer数组,它在内存中更轻,支持==并且您没有使用Integer的任何功能,因此这里不需要它们。

在使用运算符==检查时,您正在检查标识。两个引用是否指向完全相同的对象?他们之间不是平等的吗

您应该使用整数而不是整数,或者更改使用该方法的条件。

当使用运算符==检查时,您正在检查标识。两个引用是否指向完全相同的对象?他们之间不是平等的吗


您应该使用整数而不是整数,或者更改使用该方法的条件。

确保您理解对象相等和对象标识之间的区别。您正在使用==检查您的值是否在数组中-这将检查标识,而不是相等性。请改用数字[index].equalskey。

确保您理解对象相等和对象标识之间的区别。您正在使用==检查您的值是否在数组中-这将检查标识,而不是相等性。请改用数字[index].equalskey


在搜索之前,需要为每个元素设置值。 下面的语句仅声明具有20个元素且值为null的新数组 静态整数[]accs=新整数[20]; 替换为: 静态整数[]accs=新整数[]{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; 然后重新测试


关于,在搜索之前,您需要为每个元素设置值。 下面的语句仅声明具有20个元素且值为null的新数组 静态整数[]accs=新整数[20]; 替换为: 静态整数[]accs=新整数[]{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; 然后重新测试


关于,

以这种方式初始化数组静态整数[]accs={3,5,15,6,4,32,9};并在main中调用search方法。您的函数工作正常。

按如下方式初始化数组静态整数[]accs={3,5,15,6,4,32,9};并在main中调用search方法。您的函数工作正常。

使用以下命令捕获用户输入
BufferedReader br=新的BufferedReadernew InputStreamReaderSystem.in

使用以下命令捕获用户输入
BufferedReader br=新的BufferedReadernew InputStreamReaderSystem.in

您使用整数而不是int有什么原因吗?您在键中看到了什么?您期望得到什么?您正在使用==进行对象比较,对象比较会引用比较。您应该使用equals或simple int。只有当您的数字在整数缓存范围内时,此代码才会意外工作。请使用equals而不是==来比较整数。或者改为使用int。您正在通过引用比较整数对象。你需要使用equals这段代码正在运行这里有什么问题吗???你使用Integer而不是int有什么原因吗?您在键中看到了什么?您期望得到什么?您正在使用==进行对象比较,对象比较会引用比较。您应该使用equals或simple int。只有当您的数字在整数缓存范围内时,此代码才会意外工作。请使用equals而不是==来比较整数。或者改为使用int。您正在通过引用比较整数对象。你需要使用相同的代码。这段代码正在运行。这里有什么问题吗????
java.util.Arrays.asList(accs).indexOf(key)  
org.apache.commons.lang.ArrayUtils.indexOf(accs, key);