ArrayList печатает несколько раз - PullRequest
0 голосов
/ 23 мая 2018

Моя проблема в том, что когда я запускаю этот код, все в ArrayList печатается примерно 3 раза.

Вот код, который вам нужно будет увидеть:

static ArrayList<String> list = new ArrayList<String>();
static HashMap<String, Character> books = new HashMap<String, 
Character>();

public static void main(String[] args){
//      Title, Section
books.put("Harry Potter and the blank blank blank", 'A');
books.put("Harry Potter and the blank", 'Z');
books.put("Harry Potter ", 'Z');
books.put("Harry Potter and the blank blank", 'L');
findBook("Harry");
}

public static void findBook(String title){
list.clear();
for (String key : books.keySet()) {
  if(key.equalsIgnoreCase(title)){
    System.out.println(books.get(key));
  }
  else if (key.startsWith(title)) {
    list.add(key);
  }else System.out.println("Book not found");
    for(String bookTitle : list){
      System.out.println("Book: " + bookTitle);
  }
}

Пожалуйста, помогите, Спасибо огромное!-S1ant

Ответы [ 2 ]

0 голосов
/ 23 мая 2018

Цикл for выполняется каждый раз, когда вы пытаетесь найти книгу.Следовательно, вы видите несколько отпечатков.

for (String bookTitle : list) {
    System.out.println("Book: " + bookTitle);
}

Вы можете переместить вышеуказанный цикл for в метод main и сразу после вызова метода findBook.

0 голосов
/ 23 мая 2018

Вы сохранили цикл for, который печатает книги в той, которая находит, и, следовательно, вы получаете несколько отпечатков.Переместите цикл for, который выводится из этого цикла, как показано ниже:

static ArrayList<String> list = new ArrayList<String>();
static HashMap<String, Character> books = new HashMap<String, 
Character>();

public static void main(String[] args){
//      Title, Section
books.put("Harry Potter and the blank blank blank", 'A');
books.put("Harry Potter and the blank", 'Z');
books.put("Harry Potter ", 'Z');
books.put("Harry Potter and the blank blank", 'L');
findBook("Harry");
}

public static void findBook(String title){
list.clear();
for (String key : books.keySet()) {
  if(key.equalsIgnoreCase(title)){
    System.out.println(books.get(key));
  }
  else if (key.startsWith(title)) {
    list.add(key);
  }else 
    System.out.println("Book not found");
  }
}

// Move this out of the above loop
for(String bookTitle : list){
  System.out.println("Book: " + bookTitle);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...