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