java - 如何从另一个类的数组中打印特定行
问题描述
所以我试图只打印添加到数组中的小说,但我不知道如何......我还需要返回特定类型的书籍数量。我是编程新手,所以请放轻松:)
这是应用程序,我必须从控制台添加所有书籍从控制台添加的每个单词都会触发一个特定操作,因此要打印我需要编写的书籍打印,添加我需要编写添加,书籍类型,书籍标题,作者等等。
import java.util.*;
public class App{
public static void main(String [] args){
Scanner s = new Scanner(System.in);
Library bib = Library.getInstance();
String line = "";
line = s.nextLine();
String[] v = line.split("\\s+");
while(true){
switch(v[0]){
case "add":
String title = v[2];
String autor = v[3];
Book c = null;
if("story".equals(v[1])){
c = new Story(title, autor);
} else if("novel".equals(v[1])){
int pages = Integer.parseInt(v[4]);
c = new Novel(title, autor, pages);
} else if("poetry".equals(v[1])){
String publish = v[4];
c = new Poetry(title, autor, publish);
}
bib.adauga(c);
break;
case "print" :
case "return" :
case "exit" : System.exit(0); break;
default : System.out.println("Command " + v[0] + " does not exist");
}
}
}
}
import java.util.*;
public class Library{
private static Library instance;
List<Book> books;
private Library(){
books = new ArrayList<>();
}
public static Library getInstance(){
if(instance == null){
instance = new Library();
}
return instance;
}
public void adauga(Book c){
books.add(c);
}
public void afisare(){
for(Book c : books){
System.out.println(c);
}
}
}
public abstract class Book{
String title;
String autor;
public Book(String title, String autor){
this.title=title;
this.autor=autor;
}
@Override
public String toString(){
return title + " " + autor;
}
}
public class Novel extends Book {
int pages;
public Novel(String title, String autor, int pages){
super(title, autor);
this.pages=pages;
}
@Override
public String toString(){
return super.toString() + " " + pages;
}
}
解决方案
您可以使用 instanceof 来检查对象的类型。
//Go through every book
for(Book book : bib.books){
if(book instanceof Novel){
System.out.println(book);
}
}
推荐阅读
- c# - 如何制作 Blazor 页面互斥锁
- javascript - JavaScript ES6+ 比较对象数组中的字段
- c# - Blazor 事件仅在调试时正常工作
- server - Jupyter 似乎连接正常,但无法在浏览器中访问
- c# - 棋盘游戏的 int 数组
- pine-script - 在 pinescript 警报中,有什么方法可以检测图表的时间范围,然后根据它发送警报?
- python - 在 Docker 上使用 parsedmarc 分析和可视化 DMARC 结果
- jwt - JWT 第三方应用程序声明未出现在 Cognito accessToken 中
- python - Qt Designer 和 Python 在单独的 functions.py 中运行一个函数
- asp.net - 如何将类名或样式名添加到使用 SQL 'FOR XML' 生成的 HTML 标记中