2014-10-05 109 views
-1

enter image description here 我有labels這是一個列表String,等於[0,1]。但是,以下行返回-1,而我期望它返回1。任何想法可能是錯誤或失蹤? 定義:
maxLabel是一個初始設置爲-1的整數。 public列表標籤;爲什麼indexOf無法按預期工作?

在意想不到的結果發生,而maxLabel等於1:

int maxLabelIndex=labels.indexOf(maxLabel); 
+0

請發佈'標籤'的內容。如果列表*不包含元素,則'indexOf'返回-1。 – Maroun 2014-10-05 08:38:29

+0

'-1'表示該項目未在列表中找到。仔細檢查你的變量的值。 – ApproachingDarknessFish 2014-10-05 08:38:59

+0

正如我所提到的這是執行該行之前標籤的內容[0,1] – 2014-10-05 08:39:02

回答

1

indexOf返回指定元件的第一次出現的索引在此列表中,或-1,如果該列表不包含元件。更正式地說,返回其索引i滿足(o == NULL?得到(I)== NULL

在你的情況元素"1"1指數,這就是爲什麼你會得到1 如果你會通過int maxLabel = 1;通知,maxLabel被聲明爲int類型,那麼你會得到-1,因爲字符串本身並不包含整數類型的對象。

基本上的indexOf方法採取爲Object類型的參數o。每當你傳遞不同的對象類型(例如,您宣佈您的List類型String,並且您正在檢查不同類型如Integer,Double,int,long, etc.),你可以期待得到-1

+0

是的,你是對的。我將maxLabel轉換爲String,現在它工作正常。 – 2014-10-05 08:48:02

相關問題