对于每个对象,在数组中查找对象,然后返回该对象

时间:2018-10-09 21:40:14

标签: java arraylist foreach

新来的一个小问题让我头疼。我感觉就像要修复的一行代码一样,但对于我的一生,我无法弄清楚。

我应该有一个for-each循环,该循环可在数组中定位对象,如果存在则返回该对象,如果不存在则返回null。但是对我来说,这很奇怪,它可以找到合适的对象,并将其设置为某种对象,而不是对象。我可以说,因为其他依赖于此方法的方法都很好,所以无论出于何种原因,该方法都不会返回该对象。无论如何,这是代码,我认为您不需要其他任何东西

   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 :(得分:2)

一旦找到对象,就应该停止进一步搜索:

  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; 

答案 1 :(得分:1)

您的代码不包含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;