当前位置: 首页 > 知识库问答 >
问题:

在 Java 中“不能取消引用”

邹高懿
2023-03-14

我对Java相当陌生,我使用的是BlueJ。当我试图编译时,我总是得到这个“Int不能被解引用”的错误,我不知道是什么问题。这个错误特别发生在我的if语句的底部,它说“equals”是一个错误,“int不能被解引用。”希望得到一些帮助,因为我不知道该怎么办。提前感谢!

public class Catalog {
    private Item[] list;
    private int size;

    // Construct an empty catalog with the specified capacity.
    public Catalog(int max) {
        list = new Item[max];
        size = 0;
    }

    // Insert a new item into the catalog.
    // Throw a CatalogFull exception if the catalog is full.
    public void insert(Item obj) throws CatalogFull {
        if (list.length == size) {
            throw new CatalogFull();
        }
        list[size] = obj;
        ++size;
    }

    // Search the catalog for the item whose item number
    // is the parameter id.  Return the matching object 
    // if the search succeeds.  Throw an ItemNotFound
    // exception if the search fails.
    public Item find(int id) throws ItemNotFound {
        for (int pos = 0; pos < size; ++pos){
            if (id.equals(list[pos].getItemNumber())){ //Getting error on "equals"
                return list[pos];
            }
            else {
                throw new ItemNotFound();
            }
        }
    }
}

共有3个答案

夏侯瑞
2023-03-14

取消引用是访问引用引用的值的过程。由于int已经是一个值(不是引用),因此不能取消引用。所以你需要将你的代码(.)替换为(==)。

狄阳华
2023-03-14

基本上,你试图使用int,就好像它是一个对象,它不是(好吧......这很复杂)

id.equals(list[pos].getItemNumber())

应该是。。。

id == list[pos].getItemNumber()
顾淳
2023-03-14

id是基元类型int,而不是Object。不能像在这里那样对基元调用方法

id.equals

尝试替换它:

        if (id.equals(list[pos].getItemNumber())){ //Getting error on "equals"

        if (id == list[pos].getItemNumber()){ //Getting error on "equals"
 类似资料:
  • 问题内容: 我开始使用Java(我正在学习微编辑),但在以下课程中收到此错误:“无法取消引用”: 我在这里做错了什么?好吧,我来自PHP和ECMAScripts,能够以这种方式传递函数自变量,因此我真的不理解该错误。 问题答案: 在中是你已经通过色彩值,而不是你的参考。因此,错误是当您尝试在上调用方法而无法执行时。

  • 问题内容: 问题是。 问题答案: 是某些Java编译器在您尝试在原语上调用方法时出现的错误。在我看来,这会有所帮助,但是我知道什么。 从你的代码,看来你认为你可以复制的文本表示将通过执行hours.setText(hoursminfield); 这有一些错误:1)hours是一个原始类型,没有可以调用的方法。这就是给您您所询问的错误的原因。2)您没有说hoursminfield是什么类型,也许您还

  • 问题内容: 在下面的代码中,我有int无法取消引用错误,这里//我有错误。我很困惑,因为变量b用于稍后在行中引用empl数组中的点,而没有显示为错误。那么,如何解决此问题,为什么会产生错误?我将不胜感激任何帮助。示例代码也很棒,因为这似乎是我学得最好的方法。谢谢! 编辑:欢迎按员工编号对数组进行排序的任何其他建议。 问题答案: 显然会传回。 是原始类型,而不是对象。 因此,您不能调用类似的方法。

  • 问题内容: 我是Java的新手,正在使用BlueJ。尝试编译时,我不断收到此“无法取消引用Int”错误,但我不确定是什么问题。该错误专门在底部的if语句中发生,其中说“等于”是错误,并且“不能取消引用int”。希望得到一些帮助,因为我不知道该怎么办。先感谢您! 问题答案: 是原始类型而不是。您不能像在这里那样在原始类型上调用方法: 尝试替换此: 与

  • 我在这里看到了一个如何使用比较器界面对 ArrayList 进行排序的示例,所以我尝试了一下。对于Strsing,它可以完美地工作,但是对于一个我想排序为整数的变量,它不会编译,说“int不能被取消引用”。 我能做什么才能使它工作并允许我按分数变量对ArrayList进行排序? 这是我的代码:

  • 在编写以下代码时,无法取消对字符的引用错误 在线if(A. charAt(i-1). equals(B. charAt(j-1)))