使用indexOf方法获取Item的位置

时间:2013-10-26 00:11:30

标签: java object methods arraylist java.util.scanner

方法getPosition使用ArrayLinearList类中的方法indexOf返回列表中项目的位置,每当我传递一个String的参数时,它就会一直返回-1,即使该项目存在于列表中< / p>

  private ArrayLinearList array;
        private Scanner scanner;
        public ArrayShoppingList1()
        {
            array = new ArrayLinearList();
            scanner = new Scanner(System.in);    
        }


    public int getPosition()
        {

        System.out.println("Please enter the name of the Item");
        String name = scanner.nextLine();
        int z = array.indexOf(name);
        return z;

    }






/** @return index of first occurrence of theElement,
     * return -1 if theElement not in list */
   public int indexOf(Object theElement)
   {
      // search element[] for theElement
      for (int i = 0; i < size; i++)
         if (element[i].equals(theElement))
            return i;

      // theElement not found
      return -1;
   }   

4 个答案:

答案 0 :(得分:0)

您可能忘记将字符串存储到array

array.add("some string here");

或者,您确定要搜索的元素是否在数组中?

尝试使用compareTo()方法代替equals来比较字符串。

答案 1 :(得分:0)

请提供整个代码。什么是element

顺便说一句,请尝试打印name的值 - 如果您读取的第一行是空的,该怎么办?

答案 2 :(得分:0)

indexOf函数中:

public int indexOf(Object theElement)
   {
      // search element[] for theElement
      for (int i = 0; i < size; i++)
         if (element[i].equals(theElement))
            return i;

      // theElement not found
      return -1;
   } 

大小可能是< 1; another case would be you are having大写and小写letter problem. Try comparing with String.equalsIgnoreCase(String)`function

答案 3 :(得分:0)

假设theElement提供了一个字符串。

public int indexOf(Object theElement)
   {
      String S = (String) theElement;
      // search element[] for theElement
      for (int i = 0; i < size; i++)
         if (element[i].equalsIgnoreCase(S))
            return i;

      // theElement not found
      return -1;
   }