java - 使用 While 循环添加到数组列表

标签 java arraylist while-loop

我有一个包含书籍的数组列表。我想做的(出于各种原因)是使用 While 循环继续将书籍添加到我的数组列表中,直到我告诉程序停止。为了让它停止,我使用扫描仪询问人类用户是否应该添加另一本书。如果用户回答"is",则该方法将重复,否则该方法将停止。

不幸的是,我(目前)陷入了两个领域。首先,我不确定如何将决策插入到方法中,我尝试过:

while(decision.equals("Yes"){addBooks(anyTitle,anyAuthor);},
然而,这似乎是错误的,因为它进入了一个循环(虽然我想要),但是它会导致两个问题:A)即使我输入其他内容,该方法也不会结束(除非我使用另一个扫描仪并包含一个Break) 和 B) 相同的输入字段一次又一次地插入到数组列表中,而没有给我输入新字符串的机会。

/**
 * Method to add a single book
 */
public void setOneBook(String anyTitle, String anyAuthor){
    bookList.add (new Book(anyTitle,anyAuthor));
}

/**
 * Method to add books to collection until the command to stop is given.
 */
public void addBooks(String anyTitle, String anyAuthor){
    bookList.add (new Book(anyTitle,anyAuthor));
    System.out.println("Would you like to add another book?");
    String decision = keybd.next();
}

我现在感觉很愚蠢,所以请不要发表任何讽刺的评论。

在此期间,我会弄乱我的代码,因此如果有任何变化(无论好坏),我都会更新我的帖子。

最佳答案

将询问更多信息的逻辑与更新列表的逻辑分开

String decision = "No";
do {
    System.out.println("Would you like to add another book?");
    decision = keybd.nextLine();
    if (decision.equals("Yes")) {
        // Get information about book
        String anyTitle = keybd.nextLine();
        String anyAuthor = keybd.nextLine();
        addBooks(anyTitle,anyAuthor);
    }
} while (decision.equals("Yes"));

您可以更进一步,创建一个 addBook 方法来提示用户输入信息...

public void addBook() {
    String anyTitle = keybd.nextLine();
    String anyAuthor = keybd.nextLine();
    addBooks(anyTitle,anyAuthor);
}

然后你可以从 while-loop 调用 addBook

do {
    System.out.println("Would you like to add another book?");
    String decision = keybd.nextLine();
    if (decision.equals("Yes")) {
        addBook();
    }
} while (decision.equals("Yes"));

进一步解耦您的代码,每当您想要提示用户有关图书的信息并将其添加到列表中时,您都可以调用 addBook

关于java - 使用 While 循环添加到数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28687638/

相关文章:

Java Midi Sequencer - 使用播放头进行音符播放

java - Hadoop 将输出写入一个 txt 文件

java - 按每个字符串中的最后一个单词迭代字符串的 ArrayList 并按字母顺序排列

java - 保存临时数组列表以在适配器中使用

c - 在 while 循环内使用 scanf 读取数组时出现意外行为

C++ 为什么我的循环中断了?

java - 如何在 Activiti Service Task 中立即将实体持久保存/提交到数据库

java - Java内部Oracle查询

java - 来自不同类的对象的 ArrayList

java - while(true) 循环中的 switch 语句,文本出现两次