0

我正在尝试搜索使用名为 Name 的自定义对象的 Java LinkedList。我需要搜索名字(我在 Name 中的 compareTo 方法已经比较了姓氏,因为我需要使用它来按姓氏排序)。Name 有一个名为 getFirstName() 的观察者方法。

我从我的 LinkedList 访问名字没有任何成功。这是我想做的,但这(显然)不起作用。

if (iterator.next().getFirstName().equals(inputSearch))

有人可以指出我正确的方向吗?

这是我目前正在尝试编写的完整方法:

// Creating a method to search for a first name
  static void searchName()
{
  Scanner inData = new Scanner(System.in);

  // Label to request input from user
  System.out.println("Enter the first name that you would like to search for:");

  // Setting variable to capture input
  String inputSearch = inData.next();

  // Creating an iterator to search through the list
  iterator = list.iterator(); 

  // While loop to search each entry
  while (iterator.hasNext())
  {
      if (iterator.next().getFirstName().equals(inputSearch))
      {
          System.out.println("MATCH FOUND: " + iterator.next());
      }
  }
} 
4

2 回答 2

2

你打iterator.next()了两次电话。第二次将超过您想要的项目。相反,保存第一次调用的返回值iterator.next()并使用它。

  while (iterator.hasNext())
  {
      Name item = (Name) iterator.next();

      if (item.getFirstName().equals(inputSearch))
      {
          System.out.println("MATCH FOUND: " + item);
      }
  }

或者,更惯用的说法

  for (Name item : list)
  {
      if (item.getFirstName().equals...
  }
于 2012-10-22T23:03:14.257 回答
2
while (iterator.hasNext())  {  
   if (iterator.next().getFirstName().equals(inputSearch)) {  //iterator.next()          
                   System.out.println("MATCH FOUND: " + iterator.next());  //iterator.next()     
     }   
 } 

由于您调用 next() 两次,因此在打印时它将是下一个对象。

尝试将 iterator.next() 返回的任何内容存储在其相应的类型中,并在成功时使用它进行比较和打印。

前任:

while(iterator.hasNext(){
   Name name=iterator.next();
  if(name.getFirstName().equals(inputSearch)){
      System.out.println("Match Found"+name);
     }
}

这是我看到的错误。别的什么都不知道。

于 2012-10-22T23:04:17.350 回答