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

标签 java arrays search

我试图在一个数组中找到一个值,我确信这个值只会存在一次,所以我试图找到这个值并返回存储它的数组的索引,如果找不到则返回-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;

    }

当我运行它时,即使我知道该值存在于数组中,也没有显示任何内容。我进行了调试,然后发现 Key 变量没有我输入的值。有什么问题吗?

最佳答案

您的数组正在存储 Integer,它是一个 Java 对象,用于测试您需要调用 Object.equals 的 Java 对象是否相等。方法而不是 ==

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

关于如果在数组中找到值,则 Java 返回索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12068651/

相关文章:

java - 试图将值重新分配给类实例变量

java - 正则表达式选择下划线之间的所有字符

java - 我需要使用没有数组或循环的 Java/RegEx 从大型数据文件的车辆描述字段中删除 ~50 个颜色名称

javascript - 如何使用javascript实现网络图中节点之间的互连?

search - 给定单词/短语的白名单和黑名单,查找文本的相关性

java - 如何从java程序发送outlook邮件,而不使用SMTP

c# - 微软是否从 C# 中的数组中删除了 "Dynamic"和 "Static"措辞?

c - C中用指针初始化数组

mysql - 如何创建 Django 自定义查询?

sharepoint - SharePoint 2010 搜索中的爬网程序影响规则和爬网规则之间有什么区别?