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

Java 如果使用-OOP方法满足条件,则从现有数组中递减值,java,arrays,methods,equals,Java,Arrays,Methods,Equals,我正在尝试为一个库练习创建一个方法,但是,该方法存在一些问题 RentBook()。 基本上,我使用一种方法来添加一本我想租的书,当使用我的代码时,它会递减-1所有库存,而不是选择一本 代码: 我得到的是: [11,39,43,1,12,3] 我想要的是: [12,39,44,2,13,4]试着调试你的程序 在equals方法中放入一些print语句来打印您正在比较的两本书,看看这是否是您想要进行比较的方式?在逻辑中的不同位置打印它们,并相应地标记它们 使用一些特制的书籍对象来测试各种等式条件

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

代码:

我得到的是:

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

我想要的是:


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

试着调试你的程序

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

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

你能展示Book类的equals函数吗?看起来对于数组中的所有书籍,equals函数都返回true。我刚刚返回了。问题是,当我调试时,我在正确的对象上得到了正确的结果。起始清单是什么?您正在寻求调试代码的帮助。为了让我做到这一点,我需要复制你的错误。为了让我重现你的bug,你需要回答你的问题并发布一篇文章。您愿意这样做吗?这里有两个明显的问题(但您必须发布输出的代码和数据):1<代码>inStock[i]-似乎与任何特定的书籍无关,即使您在
if
块中这样做;二,。您正在运行
return“book name”+book无条件,在if块之外。你确定这是对的?
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;
}