2013-10-26 60 views
-1

getPosition方法使用類ArrayLinearList中的方法indexOf返回列表中的項的位置,只要我傳遞一個String的參數,它只是一直返回-1如果項目存在於列表中使用indexOf方法獲取項目的位置

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; 
    } 
+0

使用instanceof檢查元素參數。 – ash84

+1

我們可以看到[]元素是什麼? – Tdorno

+0

建議添加'System.out.println(Arrays.toString(element));'在'indexOf()'的開始處仔細檢查數組中的內容 – vandale

回答

0

您可能忘記將字符串存儲到array

array.add("some string here"); 

或者,你確定你正在搜索的元素是在數組中嗎?

嘗試使用compareTo()方法而不是equals來比較字符串。

+0

我已經有另一種方法將字符串添加到數組中希望我能爲您提供方法 –

+1

'compareTo'不會比'equals'更好地工作。 – ajb

0

請提供整個代碼。什麼是element

順便說一句,嘗試打印出name的值 - 如果您閱讀的第一行是空的,該怎麼辦?

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)`函數

+0

這是假設使用'element.length'是正確的。它可能不是,如果'element'是預先分配的,並不是所有的數組元素都被使用,那麼0 <='size' <'element.length'。不幸的是,我們不知道'size'是什麼或者它是如何設置的。 – ajb

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; 
    } 
相關問題