簡體   English   中英

顯示搜索結果 JAVA ArrayLists

[英]displaying search results JAVA ArrayLists

我應該完全使用該方法(我所有的方法都必須返回 void)

public void searchByPriceRange(double minPrice, double maxPrice)

該方法將在ArrayList<Property>中搜索要價介於 minPrice 和 maxPrice 之間的屬性,並將每個匹配項添加到本地ArrayList<Property> ,然后將其傳遞給另一個必須

displaySearchResults(ArrayList<Property> searchResults)

我將如何創建一個本地ArrayList<Property>可以在第一種方法的 scope 之外訪問?(如果那是我應該做的)

我的實例變量和 ArrayList 的初始化

 private ArrayList<Property> properties = new ArrayList<Property>();

我在 AgentListing class 中的方法

public void searchByPriceRange(double minPrice, double maxPrice){

    ArrayList<Property> searchResults;
    searchResults = new ArrayList<Property>();
    for (Property property : properties){
        if (property.getAskingPrice() > minPrice &&
                property.getAskingPrice() < maxPrice){


            searchResults.add(property);
           
        }
    }
}

我的顯示方法 AgentListing class

public void displaySearchResults(ArrayList<Property> searchResults){


    for(Property result: searchResults) {

        System.out.println(result);
    }

}

我的驅動程序 class 我正在嘗試訪問本地 arraylist

AgentListings CharlesListings = new AgentListings();

        Property one = new Property("1ListingNumber", "777 Imaginary Drive, Nowhere, British Columbia", 1.00, "Single Family", "House",
            "1.1 Acre", 2007);

    one.setNumberOfBedrooms(1);
    one.setNumberOfBathrooms(1);


    Property two = new Property("2ListingNumber", "777 Imaginary Drive, Nowhere, British Columbia", 2.00, "Single Family", "House",
            "2.2 Acre", 2007);

    two.setNumberOfBedrooms(2);
    two.setNumberOfBathrooms(3);

CharlesListings.addProperty(one);
CharlesListings.addProperty(two);

CharlesListings.searchByPriceRange(1.0, 2.0);

CharlesListings.displaySearchResults(searchResults); //searchResults is not reachable

如果我不清楚,我會將完整的說明添加到我的作業中

我將如何創建一個本地 ArrayList 可以在第一種方法的 scope 之外訪問?(如果那是我應該做的)

這里:

public void searchByPriceRange(double minPrice, double maxPrice)

返回一個列表(searchResults)而不是 void...

您可以定義一個臨時變量,或者只是將返回的值作為參數排隊到顯示方法

ArrayList<Property> x = searchByPriceRange(min, max);
displaySearchResults(x);

或者

displaySearchResults(searchByPriceRange(min, max));

searchResult是一個局部變量,因此它在聲明它的方法之外是不可見的。一個可能的解決方案是將searchByPriceRange方法的簽名從:

public void searchByPriceRange(double minPrice, double maxPrice)

public List<Property> searchByPriceRange(double minPrice, double maxPrice)

現在您可以返回searchResults列表,因此可以將其存儲在變量中或傳遞給另一個方法。 由於您只需要將它傳遞給displaySearchResults方法,您可以編寫:

CharlesListings.displaySearchResults(CharlesListings.searchByPriceRange(1.0, 2.0));

像這樣修改searchByPrice(...)方法:

public ArrayList<Property> searchByPriceRange(double minPrice, double maxPrice){

    ArrayList<Property> searchResults;
    searchResults = new ArrayList<Property>();
    for (Property property : properties){
        if (property.getAskingPrice() > minPrice &&
                property.getAskingPrice() < maxPrice){

              searchResults.add(property);
        }
    }
    return searchResults;
}

現在,當它返回 searchResults 數組時,您可以將返回的值用作displaySearchResults(searchResults)方法的參數。 像這樣:

ArrayList<Property> searchResultsList = CharlesListings.searchByPriceRange(1.0, 2.0);
CharlesListings.displaySearchResults(searchResultsList);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM