2014-10-05 73 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

相关问题