我有兩個班級Museum和Painting. Painting班級按預期作業,但我遇到了Museum班級問題。該方法的目的是回傳博物館擁有的繪畫的ArrayList,它與引數字串匹配。
當我嘗試編譯代碼時,我收到了很多錯誤訊息,顯然我沒有正確編譯代碼。
例如,如果有畢加索的畫作——它應該只回傳所有這些畫作,而不回傳其他任何東西。
我想我可能錯過了一步 - 可能是通過創建一個區域變數來首先存盤它,但我有點像磚墻。我還想知道當 ArrayList 使用 Paint 物件時 String 是否正確。
有誰知道我在這里想念什么?
public class Museum {
//creating the fields
private ArrayList<Painting> paintings;
private String name;
/**
* Create a Museum Class
*/
public Museum(String aMuseum) {
paintings = new ArrayList<>();
name = aMuseum;
}
public String listMatches(String searchString)
{
if(filename.equals(searchString)) {
return filename;
}
}
}
uj5u.com熱心網友回復:
按藝術家搜索繪畫應回傳繪畫子串列(如果未找到繪畫,則可能為空):
public List<Painting> listMatches(String artist) {
List<Painting> matches = new ArrayList<>();
for (Painting painting : paintings) {
if (artist.equals(painting.getArtist())) {
matches.add(painting);
}
}
return matches;
}
Stream API 可用于此(更簡潔和功能性的風格):
public List<Painting> listMatches(String artist) {
return paintings.stream()
.filter(p -> artist.equals(p.getArtist()))
.collect(Collectors.toList());
}
uj5u.com熱心網友回復:
好的,我假設在您的 Paint 課程中,您有一個 Author 屬性和它的 getter。
我已將 listMatches 方法更改為具有 for-each 回圈。此回圈將遍歷您的 Paintings 陣列串列中的每個元素,并將其作者的姓名保存在一個區域變數中。如果當前畫作的作者與您要查找的作者相匹配,它將列印標題。
我將 listMatches 的回傳型別從 String 更改為 void,因為您沒有回傳任何內容,只是列印。
如果您想使用它們,您可以將這些畫保存在某處(例如另一個 ArrayList),而不僅僅是列印名稱。請記住更改回傳型別,因為在這種情況下您將回傳某些內容。
記住要完全按照畫中的作者姓名寫下作者的姓名,否則可能找不到。
我還沒有機會嘗試它,但它應該有效。
public class Museum {
//creating the fields
private ArrayList<Painting> paintings;
private String name;
/**
* Create a Museum Class
*/
public Museum(String aMuseum) {
paintings = new ArrayList<>();
name = aMuseum;
}
public void listMatches(String searchString)
{
String this_painting_author = new String();
for (Painting painting : paintings){
this_painting_author = painting.getAuthor();
if(this_painting_author.equals(searchString)) {
System.out.println(painting.getTitle());
}
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/351813.html
上一篇:Java供應商<>獲取來源資訊
