2015-12-03 3 views
0
case 2: 
    System.out.println("Please enter Book ID: "); 
    String userinput2 = sc.next(); 
    for (int i = 0; i < myBooks.size(); i++) { 
     if (myBooks.get(i).getBookID().contains(userinput2)) { 
      System.out.println("BookID: " + myBooks.get(i).getBookID() + "\nTitle: " 
        + myBooks.get(i).getTitle() + "\nAuthor: " + myBooks.get(i).getAuthor()); 
      System.out.println("Please enter new details of book"); 
      System.out.println("Title: "); 
      String userinput7 = sc.next(); 
      myBooks.get(i).setTitle(userinput7); 
      System.out.println("Author: "); 
      String u1 = sc.next(); 
      myBooks.get(i).setAuthor(u1); 
      myBooks.get(i).setOnLoan(false); 
      myBooks.get(i).setNumLoans(0); 
      System.out.println("---------------------------------------------------"); 
      System.out.println("The book has been successfully updated"); 
      System.out.println("Book ID: " + myBooks.get(i).getBookID() + " " + "\nTitle: " 
        + myBooks.get(i).getTitle() + " " + "\nAuthor: " + myBooks.get(i).getAuthor()); 
      System.out.println("---------------------------------------------------"); 
     } 
     else { System.out.println("Please enter a correct bookID"); 
     } 
    } 

// У меня возникла проблема с моей проверкой проверки. Если пользователь вводит идентификатор bookID, который не существует, вместо того, чтобы печатать «пожалуйста, введите правильный идентификатор книги» один раз, он распечатывает его 4 раза, что соответствует количеству объектов, которые у меня есть в списке массивов. Есть ли способ сортировать это?строка кода печать dublicates

+0

Рассмотрим обеспечение [работоспособный пример] (HTTPS : //stackoverflow.com/help/mcve), который демонстрирует вашу проблему. Это не дамп кода, а пример того, что вы делаете, что подчеркивает проблему, с которой вы сталкиваетесь. Это приведет к меньшему путанице и лучшим ответам. – MadProgrammer

+0

Сначала вы должны проверять дубликаты, прежде чем добавлять какие-либо новые элементы. – MadProgrammer

+0

И вы также не позволяете пользователю вводить снова после выполнения else, поэтому он продолжает выполнение до завершения цикла. Попробуйте добавить 'userinput2 = sc.next();' возможно, в 'else'. –

ответ

1

Ваше другое заявление в середине для постановки

for (int i = 0; i < myBooks.size(); i++) { 
     if (myBooks.get(i).getBookID().contains(userinput2)) { 
      [[do stuff]] 
     } 
     else { System.out.println("Please enter a correct bookID"); 
     } 
} 

Похоже, она должна быть в середине, если заявление

if (myBooks.get(i).getBookID().contains(userinput2)) { 
    for (int i=...) { 
     [[do stuff]] 
    } 
} 
else { System.out.println("Please enter a correct bookID"); 
} 
Смежные вопросы