List是一个数组列表,在该列表中,系统会提示用户输入单词,直到他们输入“done”。
ArrayList<String> List =new ArrayList<String>();
我继续在以下行中收到错误:“不兼容的类型”:
str = List.get(i);
其中str是一个字符串
public int compareTo(ArrayList List, String words, int size)
{
S1 drive = new S1 ();
int result=0;
int min=1;
String str;
while (result<min)
{ for(int i=0; i<size ;i++){
str = List.get(i);
result=words.compareTo(str);
if (result<min)
min=result;
}
}
return result;
}
答案 0 :(得分:4)
您在compareTo
方法签名中使用了原始类型。当发生类型擦除时,您get
上的List
方法(令人困惑地命名)是Object
,而不是String
,compareTo
期望String
班。
接受非原始ArrayList
作为参数。
public into compareTo(ArrayList<String> list, String words, int size)
(我已将List
更改为list
以遵循常见的Java命名约定并避免使用常用的Java接口。)
答案 1 :(得分:1)
您的compareTo
方法获取原始ArrayList
参数,因此您无法在不进行转换的情况下将该列表的元素分配给字符串。
此外,我不会使用List
作为变量名,因为已经有一个广泛使用的名称接口。
public int compareTo(ArrayList<String> list, String words, int size)
{
S1 drive = new S1 ();
int result=0;
int min=1;
String str;
while (result<min) {
for(int i=0; i<size ;i++) {
str = list.get(i);
result=words.compareTo(str);
if (result<min)
min=result;
}
}
return result;
}
答案 2 :(得分:0)
更改您的职能名称:
public int compareTo(ArrayList<String> list, String words, int size)
和你的行:
str = list.get(i);
你之前的方式与List
接口集合有关,这不适合调用这样的参数