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

问题描述

我正在尝试为图书馆练习创建一种方法,但是,该方法存在一些问题 RentBook()。 基本上,我使用一种方法添加要出租的书,使用我的代码时,它会将所有库存减少-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;
    }
}

我的equals函数

@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语句。放心使用。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...