Для каждого найти объект в массиве и вернуть этот объект - PullRequest
0 голосов
/ 10 октября 2018

Новичок здесь, есть небольшая проблема, которая вызывает у меня головную боль.Я чувствую, что это всего лишь одна строка кода, которую нужно исправить, но я не могу этого понять.

У меня должен быть цикл for-each, который находит объект в массиве и возвращает этот объект, если он существует, и возвращает ноль, если он не существует.Но для меня это странная вещь: он может найти объект просто отлично, и он установит его для чего-то, а не для объекта, просто для чего-то.Я могу сказать, потому что другие методы, зависящие от этой работы, просто отлично, этот просто не возвращает объект по какой-либо причине.В любом случае, вот код, я не думаю, что вам нужно что-то еще

   public Icosahedron findIcosahedron(String labelIn) {
      Icosahedron output;
      output = null;
      for (Icosahedron i : iList) {
         if (i.getLabel().equalsIgnoreCase(labelIn))  {
            output = i;
         }
      }
      return output;
   }

Запрошено:

 case 'F':
           System.out.print("\tLabel: ");
           label = userInput.nextLine();
           if (myIcosahedronList.findIcosahedron(label) != null) {
               myIcosahedronList.findIcosahedron(label);
           }
           else {
              System.out.println("\"" + label + "\" not found");
           }
           break; 

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Ваш код не включает функцию System.out.print (), поскольку, когда объект найден, вы запускаете функцию и ничего не делаете с тем, что он возвращает:

 case 'F':
           System.out.print("\tLabel: ");
           label = userInput.nextLine();
           if (myIcosahedronList.findIcosahedron(label) != null) {
               myIcosahedronList.findIcosahedron(label); // <- here
           }
           else {
              System.out.println("\"" + label + "\" not found");
           }
           break; 
0 голосов
/ 10 октября 2018

Как только вы найдете объект, вам следует прекратить поиск дальше:

  for (Icosahedron i : iList) {
     if (i.getLabel().equalsIgnoreCase(labelIn))  {
        output = i;
        break;
     }
  }

Используйте break, чтобы выйти из цикла.

Во второй части вашего хранилища кодов:

case 'F':
           System.out.print("\tLabel: ");
           label = userInput.nextLine();
           Icosahedron icosahedron = myIcosahedronList.findIcosahedron(label);
           if ( icosahedron == null) {
               System.out.println("\"" + label + "\" not found");
           }
           else {
              // Do something with icosahedron
           }
           break; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...