Java 阵列和对象效率

Java 阵列和对象效率,java,arrays,object,compiler-errors,Java,Arrays,Object,Compiler Errors,测试类代码(我的编译器错误发生的地方)无法弄清楚如何让它与INT类型的东西一起工作,我有3个其他类似的方法,所有这些方法都使用字符串,但我知道这不是INT应该使用的方式,任何指导都将非常好 由于您是按库存编号查找图书对象,因此应该使用映射结构而不是数组。使用 公共静态void findBookByInventoryNumber(书籍的HashMap映射,int inventoryNumberArched) { 返回books.get的映射(inventoryNumberSearched); }

测试类代码(我的编译器错误发生的地方)无法弄清楚如何让它与INT类型的东西一起工作,我有3个其他类似的方法,所有这些方法都使用字符串,但我知道这不是INT应该使用的方式,任何指导都将非常好

由于您是按库存编号查找
图书
对象,因此应该使用映射结构而不是数组。使用

公共静态void findBookByInventoryNumber(书籍的HashMap映射,int inventoryNumberArched)
{
返回books.get的映射(inventoryNumberSearched);
}

对于循环,这可能比常规的
稍好一些:

String message = "";
for(Book book : arrayOfBooks) {
    if(inventoryNumberSearched == book.getInventoryNumber() {
        message = message + book.toString()
    }
}
但是,需要注意的是,您不能保证
for each
循环在数组中迭代的顺序,因此,如果
book.toString()
字符串附加到消息中的顺序很重要,您可能不应该使用此选项


至于编译器错误,这是有问题的:

message = Book.findBookByInventoryNumber(theBooks, searchInventoryNumber);
因为您的
findBookByInventoryNumber()

您需要将方法的返回类型更改为
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
公共静态字符串findBookByInventoryNumber(Book[]arrayOfBooks,int InventoryNumberArched)
{
字符串消息=”;
for(int i=0;i
这个问题有问题。你问了两个不同的问题(关于
for
循环和一些模糊的编译器错误)。您没有解释
for
循环有什么问题以及为什么应该更改它,也没有向我们提供有关编译器错误的详细信息。在任何人都能帮助你之前,我们需要更多的细节。你需要循环来迭代数组,除非你想要一堆if语句来检查每个索引和HashMap!不是array@JosiahHester我只能使用数组和对象来实现此目的。@nhgri如果我可以坚持使用for循环,但是在没有它的情况下还有另一种方法可以做到这一点,我只是好奇,但更重要的是尝试获得提供的代码的第二部分来处理第一部分并处理整个过程,如果有帮助的话,我添加了更多的见解。感谢幸运的是,顺序很重要,没有问题,我会坚持使用for循环,如果它有效的话,我只是想让它看起来更干净一点。但是编译器错误仍然使我无法查看是否可以使用库存编号条目进行搜索。没有人能猜到您的编译器错误。你必须把它贴在你的原始问题上。不能保证订单吗?表示在数组上,它相当于传统的
for
循环,从0开始,以1的增量迭代到数组的长度。迭代顺序定义良好并有保证(假设您的JVM遵循规范)。
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