-1

方法 getPosition 使用类 ArrayLinearList 中的方法 indexOf 返回列表中项目的位置,每当我传递 String 的参数时,即使该项目存在于列表中,它也始终返回 -1

  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

4 回答 4

0

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

顺便说一句,试着打印出name-- 如果你读到的第一行是空的怎么办?

于 2013-10-26T00:21:42.903 回答
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 withString.equalsIgnoreCase(String)` 函数

于 2013-10-26T00:23:06.180 回答
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;
   }   
于 2013-10-26T00:31:10.493 回答
0

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

array.add("some string here");

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

尝试使用compareTo()方法而不是equals比较字符串。

于 2013-10-26T00:14:57.367 回答