我有labels
這是一個列表String
,等於[0,1]
。但是,以下行返回-1
,而我期望它返回1
。任何想法可能是錯誤或失蹤? 定義:
maxLabel是一個初始設置爲-1的整數。 public列表標籤;爲什麼indexOf無法按預期工作?
在意想不到的結果發生,而maxLabel
等於1:
int maxLabelIndex=labels.indexOf(maxLabel);
我有labels
這是一個列表String
,等於[0,1]
。但是,以下行返回-1
,而我期望它返回1
。任何想法可能是錯誤或失蹤? 定義:
maxLabel是一個初始設置爲-1的整數。 public列表標籤;爲什麼indexOf無法按預期工作?
在意想不到的結果發生,而maxLabel
等於1:
int maxLabelIndex=labels.indexOf(maxLabel);
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
是的,你是對的。我將maxLabel轉換爲String,現在它工作正常。 – 2014-10-05 08:48:02
請發佈'標籤'的內容。如果列表*不包含元素,則'indexOf'返回-1。 – Maroun 2014-10-05 08:38:29
'-1'表示該項目未在列表中找到。仔細檢查你的變量的值。 – ApproachingDarknessFish 2014-10-05 08:38:59
正如我所提到的這是執行該行之前標籤的內容[0,1] – 2014-10-05 08:39:02