图书馆申请。坚持编辑书的方法

时间:2015-12-11 14:16:11

标签: java

遇到此方法的问题。谁能发现一个明显的错误?当我运行该程序并要求我输入一个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);

2 个答案:

答案 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");