java - ArrayList 不会显示其元素
问题描述
这是我的对象类:
public class Book {
private String title;
private int year;
public Book(String title, int year){
title = this.title;
year = this.year;
}
public String getTitle(){return title;}
public int getYear(){return year;}
public String toString(){return (title + "\t" + year);}
}
应用程序类将从 BookInput.txt 中读取,其中已经包含书名和出版年份的数据,并将数据传输到名为 BookList 的数组列表中。一本书的标题及其出版年份将记录在一个索引中(这意味着一个索引中有两个数据,一个字符串和一个整数)
这是我的应用程序类:
ArrayList <Book> BookList = new ArrayList();
BufferedReader br = new BufferedReader (new FileReader ("bookInput.txt"));
String str = br.readLine();
while (str!=null){
StringTokenizer st = new StringTokenizer(str,";");
String title = st.nextToken();
String yr = st.nextToken();
int year = Integer.parseInt(yr);
Book b1 = new Book (title,year);
BookList.add(b1);
str = br.readLine();
}
br.close();
for (int i = 0; i < BookList.size(); i++){
Book b2 = BookList.get(i);
System.out.println("#" + (i+1) + " " + b2.getTitle() + " , " + b2.getYear());
}
对于所有标题,我的显示将显示为 null,对于所有发布年份显示为 0。它可以编译没有任何错误。
解决方案
您必须以相反的方式设置对象的属性,并且可以考虑将私有字段设置为final
(在这种情况下,如果最终值未在构造函数中正确初始化,则会出现编译错误):
private final String title;
private final int year;
public Book(String title, int year){
this.title = title;
this.year = year;
}
推荐阅读
- c# - 在 ASP.NET Core 中使用 UseApplicationInsights/AddApplicationInsights 进行简单的注入器使用
- sql - 关于如何连接表的 SQL 分配
- javascript - jQuery触发事件并发送退格键输入,但输入文本根本无法删除
- sql-server - 不正确的语法错误sql
- python-2.7 - Python编译后“执行失败”
- python - python中基于优先级序列的序列匹配器
- html - 在旋转的 Div 周围环绕文本
- java - 如何使用加速度计按下android中的按钮?
- wordpress - WordPress(找到搜索结果)
- amazon-web-services - Terraform 破坏抛出错误