![](/img/trans.png)
[英]Having trouble rotating each individual element in a double for loop with Processing
[英]Having trouble with for each loop
所以我正在嘗試制作這個 swing GUI,它可以搜索書籍列表,然后在 JTextArea 中顯示該書籍。 這是我的 actionPerformed 方法
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Search Books")){
String bookName = JOptionPane.showInputDialog(this, "Enter books to search"); // prompts user to enter book title
if (bookName == null){
sArea.append("Enter a Book");
}else{
for (Book b: ban.getListOfBooks()){ //going through list of books to find matching title
if (bookName.equals(b.getTitle())){ // appends string if it is equal to one of the book names
sArea.append(bookName);
}else{
sArea.append("Book not found");
}
}
}
}else{
...
所以我的問題是 for each 循環。 自然,它會為列表中不相等的每個元素打印“找不到書”。 所以如果我有十本書,我輸入第一本書的名字,它會打印那個然后“找不到書”九次。 我怎么能重新格式化它只打印出一件事?
您可以使用 boolean 找到標志,然后檢查是否在循環結束時找到了這本書
}else{
boolean found = false;
for (Book b: ban.getListOfBooks()){ //going through list of books to find matching title
if (bookName.equals(b.getTitle())){ // appends string if it is equal to one of the book names
sArea.append(bookName);
found = true;
}else{
}
}
if (!found) sArea.append("Book not found");
}
如果您仍想繼續使用 foreach 循環,您可以將該部分提取到 function,在匹配時返回書名,但如果任何書不匹配,則返回“未找到”而不是附加每個迭代
像這樣:
public String searchBook(List<Book> books, bookName ){
for (Book b: books)){ //going through list of books to find matching title
if (bookName.equals(b.getTitle())){
return b.getTitle();
}
}
return "Book not found"; }
所以你只需調用這個 function 而不是你的 foreach 循環,如下所示:
sArea.append(this.searchBook(ban.getListOfBooks() , bookName))
它更干凈。
最后我不確定使用append方法是否正確如果您只想在每次用戶搜索時放置結果。
此外,如果您有一個 List,您可以使用indexOf或contains方法來了解列表中是否存在元素,這樣會更干凈。
這可以為您提供更多幫助: https://www.baeldung.com/find-list-element-java
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.