遇到此方法的问题。谁能发现一个明显的错误?当我运行该程序并要求我输入一个ID进行编辑时,我输入一个正确的ID,但是它表示"此ID已存在" ..我只想说,在我编辑了书的ID之后,如果这是有道理的。任何帮助非常感谢。
public void editBook(ArrayList<Book> books) {
boolean exsistingID = false;
int editID, ID;
String newTitle, newAuthor, newPublisher;
int newReleaseYear;
//int newNumLoans;
//boolean newOnLoan;
do {
System.out.println("Enter the ID of the book you wish to edit: ");
editID = scan.nextInt();
scan.nextLine();
if (editID == 0) {
System.out.println("ERROR - Book ID can not be 0. Please try again");
}
} while (editID == 0);
for (int a = 0; a < books.size(); a++) {
Book z = books.get(a);
if (editID == (z.getBookID())) {
exsistingID = true;
break;
}
}
if (exsistingID == true) {
System.out.println("This ID already exists. Please try again");
do {
System.out.println("Enter a new ID: ");
ID = scan.nextInt();
scan.nextLine();
if (ID == 0) {
System.out.println("ERROR - Book ID can not be 0. Please try again");
}
} while (ID == 0);
答案 0 :(得分:1)
据我了解您的代码以及您想要做的事情,您只需要一行
System.out.println("This ID already exists. Please try again");
代码太早了。 您说您想在编辑图书ID后打印此消息,但在代码中的任何位置都没有这样做。 (如果在编辑书的id之前新的id已经存在,你可能希望显示此消息)
最后一个do-while循环似乎检查新id是否已经存在。您可以使用新的布尔值来检查新的target-id是否存在(与检查第一个id是否存在的方式相同)如果存在,您可以使用该行
System.out.println("This ID already exists. Please try again");
在您的代码中,您的程序应该按照您的意愿运行。
答案 1 :(得分:0)
你为循环上的exsistingID变量分配了一个值,你有这个明显的代码,当你键入一个有效的id时,就会运行这个代码
if (exsistingID == true) {
System.out.println("This ID already exists. Please try again");