public ProvinceTerritory[] getProvinceWhoseNameContains(String substring){
String[] names;
names = new String[13];
int j=0;
for(ProvinceTerritory ptt:provinces){
if(ptt.getName().contains(substring)){
String singleName=ptt.getName();
names[j]= singleName;
j++;
}
}
return names; \\this is where the error points to
}
为什么返回类型给出错误,即使ProvinceTerritory
和names
都是数据类型arrays
?
"incompatible types:java.lang.String[] can not be converted to ProvinceTerritory[]"
答案 0 :(得分:2)
Java是一种strongly typed语言。
您无法指定返回值ProvinceTerritory[]
,而是返回String []。它们有两种不同的类型。
如果您有兴趣,可以从这些主题中了解有关该主题的更多信息:
What are the key aspects of a strongly typed language?
What is the difference between a strongly typed language and a statically typed language?
答案 1 :(得分:0)
他们都是阵列。但它们是不同类型的阵列。因此,您无法将String[]
传递给ProvinceTeritorry[]
。
更改您的方法的返回类型
public String[] getProvinceWhoseNameContains
<强>更新强>
如果您想返回Provinceteritorry[]
,那么您可以执行以下操作
public ProvinceTerritory[] getProvinceWhoseNameContains(String substring){
ProvinceTerritory[] names = new ProvinceTerritory[13];
int j=0;
for(ProvinceTerritory ptt:provinces){
if(ptt.getName().contains(substring)){
names[j]= ptt;
j++;
}
}
return names;
}
答案 2 :(得分:0)
string []和ProvinceTerritory []不同,确保需要返回哪种类型的函数。 如果需要ProvinceTerritory,则创建ProvinceTerritory的对象数组并返回ProvinceTerritory [],否则将函数返回类型更改为string []。
希望这有帮助。
答案 3 :(得分:0)
ProvinceTerritory和String的类型不同。
两者都来自完全不同的层次结构
所以,
要么将返回类型更改为String [],要么创建“names”一个ProvinceTerritory数组。