使用 While 循环添加到数组列表
Use a While loop to add to array list
我有一个包含书籍的数组列表。我正在尝试做的(出于各种原因)是使用 While 循环继续向我的数组列表添加书籍,直到我告诉程序停止。为了让它停止,我正在使用扫描仪询问人类用户是否应该添加另一本书。如果用户说是,则该方法将重复,否则,该方法将停止。
不幸的是,我被困在 2 个区域(目前)。首先,我不确定如何将决定插入到方法中,我试过:
while(decision.equals("Yes"){addBooks(anyTitle,anyAuthor);},
然而,这似乎是错误的,因为它进入了一个循环(虽然我想要),但是它会导致 2 个问题:A)即使我输入其他内容,该方法也不会结束(除非我使用另一个扫描仪和包括一个中断)和 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();
}
我现在感觉很蠢,所以请保留对自己的任何讽刺评论。
虽然这已经结束,但我会弄乱我的代码,所以如果有任何变化(无论好坏),我都会更新我的 post。
将询问更多信息的逻辑与更新列表的逻辑分开
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
提示用户输入有关图书的信息并将其添加到列表中
如果我理解你的各种代码片段,我强烈建议你考虑调用你的方法的东西 setOneBook
...但我建议你更改方法可见性(和名称)-
private void addOneBook(String anyTitle, String anyAuthor){
bookList.add (new Book(anyTitle,anyAuthor));
}
这样你就使用了encapsulation隐藏添加书籍的方法。接下来,更改 public 方法。您要添加多本书,所以不要传递标题或作者 -
public void addBooks() {
do {
String anyTitle = keybd.nextLine();
String anyAuthor = keybd.nextLine();
addOneBook(anyTitle, anyAuthor);
System.out.println("Would you like to add another book?");
} while (keybd.next().equalsIgnoreCase("yes"));
}
我有一个包含书籍的数组列表。我正在尝试做的(出于各种原因)是使用 While 循环继续向我的数组列表添加书籍,直到我告诉程序停止。为了让它停止,我正在使用扫描仪询问人类用户是否应该添加另一本书。如果用户说是,则该方法将重复,否则,该方法将停止。
不幸的是,我被困在 2 个区域(目前)。首先,我不确定如何将决定插入到方法中,我试过:
while(decision.equals("Yes"){addBooks(anyTitle,anyAuthor);},
然而,这似乎是错误的,因为它进入了一个循环(虽然我想要),但是它会导致 2 个问题:A)即使我输入其他内容,该方法也不会结束(除非我使用另一个扫描仪和包括一个中断)和 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();
}
我现在感觉很蠢,所以请保留对自己的任何讽刺评论。
虽然这已经结束,但我会弄乱我的代码,所以如果有任何变化(无论好坏),我都会更新我的 post。
将询问更多信息的逻辑与更新列表的逻辑分开
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
提示用户输入有关图书的信息并将其添加到列表中
如果我理解你的各种代码片段,我强烈建议你考虑调用你的方法的东西 setOneBook
...但我建议你更改方法可见性(和名称)-
private void addOneBook(String anyTitle, String anyAuthor){
bookList.add (new Book(anyTitle,anyAuthor));
}
这样你就使用了encapsulation隐藏添加书籍的方法。接下来,更改 public 方法。您要添加多本书,所以不要传递标题或作者 -
public void addBooks() {
do {
String anyTitle = keybd.nextLine();
String anyAuthor = keybd.nextLine();
addOneBook(anyTitle, anyAuthor);
System.out.println("Would you like to add another book?");
} while (keybd.next().equalsIgnoreCase("yes"));
}