测试类代码(我的编译器错误发生的地方)无法弄清楚如何使用INT类型的东西,我有3个其他类似的方法都使用Strings工作,但我知道这不是它的方式应该是int,任何指导都会很棒!
答案 0 :(得分:0)
由于您通过库存编号查找Book
对象,因此应使用Map结构而不是Array。使用HashMap<int, Book>
:
public static void findBookByInventoryNumber(HashMap<int, Book> mapOfBooks, int inventoryNumberSearched)
{
return mapOfBooks.get(inventoryNumberSearched);
}
答案 1 :(得分:0)
这可能比常规for
循环稍好一些:
String message = "";
for(Book book : arrayOfBooks) {
if(inventoryNumberSearched == book.getInventoryNumber() {
message = message + book.toString()
}
}
但是,重要的是要注意,您无法保证for each
循环遍历数组的顺序,因此如果将book.toString()
字符串附加到消息的顺序为所有,你可能不应该使用它。
至于你的编译器错误,这是有问题的:
message = Book.findBookByInventoryNumber(theBooks, searchInventoryNumber);
因为您的findBookByInventoryNumber()
方法是void
返回类型(并且您尝试将其发送到字符串变量中)。
您需要将方法的返回类型更改为String
并从中返回一个字符串。
从原始方法:
public static String findBookByInventoryNumber(Book[] arrayOfBooks, int inventoryNumberSearched)
{
String message = "";
for(int i = 0; i < getNumberOfBooks(); i++) {
if(inventoryNumberSearched == arrayOfBooks[i].getInventoryNumber()) {
message = message + arrayOfBooks[i].toString();
}//end if
}//end for
return message;
}//end findByInventory