我正在尝试以ArrayList的形式创建一个注册表,它将保存我读过的各种书籍。 该计划只有两个班级。一个作为条目的模板(名称:条目),另一个管理ArrayList中的条目(名称:注册表)。
这些是条目的属性:
private final String title;
private final String mangaka;
private final String year;
private final String genre;
private final String volumes;
private String completelyScanlated;
private String licensedInGerman;
private String read;
private String comments;
因此有这个构造函数:
public Entry(final String title, final String mangaka, final String year, final String genre, final String volumes,
String completelyScanlated, String licencedInGerman, String read, String comment)
{
this.title = title;
this.mangaka = mangaka;
this.year = year;
this.genre = genre;
this.volumes = volumes;
this.completelyScanlated = completelyScanlated;
this.licensedInGerman = licensedInGerman;
this.read = read;
this.comments = comments;
}
“注册表”类只有一个属性:
ArrayList<Entry> entries = new ArrayList<Entry>();
用户通过'Scanner'创建一个条目,因此在控制台中键入Strings。创建的对象通过以下方式保存在ArrayList中:
Entry object = new Entry(title, mangaka, year, genre, volumes, completelyScanlated, licensedInGerman, read, comments);
entries.add(object);
现在我想检查一个String(也是用控制台输入创建的)是否等于属性“title”。我可以用方法“.contains()”来检查输入的相等性,但是这个方法会比较所有属性。有没有办法只检查一个属性?
以下是非工作代码:
public void findEntry()
{
Scanner input = new Scanner(System.in);
System.out.println("Which title do you want to search for?");
String searchedEntry = input.nextLine();
System.out.println();
if (entries.contains(searchedEntry)) {
int x = entries.indexOf(searchedEntry);
entries.get(x);
//Entry.showDetails();
}
}
结果是通过控制台发出(代码正在运行)。
提前致谢
答案 0 :(得分:1)
我假设你的入门课程中你的标题有一个吸气剂。像getTitle()这样的东西。然后迭代所有条目并检查其标题是否包含搜索字符串。
public void findEntry(){
Scanner input = new Scanner(System.in);
System.out.println("Which title do you want to search for?");
String searchedEntry = input.nextLine();
System.out.println();
for(Entry entry : entries){
if(entry.getTitle().contains(input))
entry.showDetails(); // or Whatever
}
}
更好的做法是将标题和搜索字符串转换为小写字母。
if(entry.getTitle().toLowerCase().contains(input.toLowerCase()))
所以你可以搜索“魔戒之王”并找到“指环王:戒指的团契”。
答案 1 :(得分:0)
而不是
if (entries.contains(searchedEntry)) {
int x = entries.indexOf(searchedEntry);
entries.get(x);
//Entry.showDetails();
}
您可以遍历条目。像这样:
for(Entry entry: entries) {
if(entry.getTitle().equals(searchedEntry)) {
// Do whatever it has to do.
}
}
如果标题不需要与案例匹配,您可以使用:
if(entry.getTitle().equalsIgnoreCase(searchedEntry))