如果使用方法满足条件,则从现有数组中递减一个值 - OOP

Decrement a value from an existing array if a condition has met using a method - OOP

我正在尝试为 LIBRARY 练习创建一个方法,但是,我对该方法有一些问题 租书()。 基本上,我使用一种方法来添加我想租的书,当使用我的代码时,它会递减 -1 所有库存而不是选择一个。

代码:

public String rentBook(Book book) {
    for (int i = 0; i < books.length; i++) {
        if ((books[i].equals(book)))
            inStock[i]--;
        }
        return "book name" + book;
    }
}

我的等于函数:

@Override
public boolean equals(Object obj) {
    if (this == obj)
        return true;
    if (obj == null)
        return false;
    if (getClass() != obj.getClass())
        return false;
    Book other = (Book) obj;
    if (id != other.id)
        return false;
    if (name == null) {
        if (other.name != null)
            return false;
    } else if (!name.equals(other.name))
        return false;
    if (Double.doubleToLongBits(price) != Double.doubleToLongBits(other.price))
        return false;
    return true;
}

我得到的:

[11, 39, 43, 1, 12, 3]

我想要的:

[12, 39, 44, 2, 13, 4]

尝试调试您的程序。

  • equals 方法中加入一些打印语句来打印您正在比较的两本书,看看是否是您想要比较的方式?在逻辑中的不同位置打印它们并相应地标记它们。
  • 使用一些特制的 book 对象来测试各种 equals 条件。
  • 并在每次递减后打印 instock 值。

最好的调试工具之一是 print 语句。自由使用它。