2015-12-11 230 views
0

上遇到此方法有問題。任何人都可以發現明顯的錯誤?當我運行該程序並要求我輸入要編輯的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); 

回答

1

據我理解你的代碼,你想你剛纔什麼都行

System.out.println("This ID already exists. Please try again"); 

在你的代碼爲時尚早。 你說你想在你編輯書本編號後打印這條信息,但是這在代碼中還沒有完成。 (也許你想要顯示這條消息,如果在編輯本書的ID之前已經存在新的ID)

最後一個do-while循環似乎檢查新的id是否已經存在。您可以使用一個新的布爾(如你檢查的第一個ID是否以同樣的方式),以檢查新的目標-ID存在,如果這樣做,你可以使用線

System.out.println("This ID already exists. Please try again"); 

在你的代碼和你程序應該按照你的意願行事。

0

您指定的真值,環路上的exsistingID變量,你有這樣明顯的代碼運行巫時間evrey你輸入有效的身份證件

if (exsistingID == true) { 
    System.out.println("This ID already exists. Please try again");