在另一个 class 中传递方法时类型不兼容
Incompatible types when passing method in another class
当我使用另一个 class 的这些方法时,我遇到了不兼容的类型错误,我应该 return 给定年份的平均马力在以下范围内的所有汽车的数组指定的范围。
这是我从另一个 class 得到的方法,其中 returns arraylist:
public ArrayList<Lamborghini> getCarsFromThisYear(int year){
ArrayList<Lamborghini> fromYear = new ArrayList<Lamborghini>();
for( Lamborghini c : inventory){
if(c.getModelYear() == year){
fromYear.add(c);
}
}
if( fromYear.size() == ZERO){
return new ArrayList<>();
}
return fromYear;
}
public Lamborghini[] getCarsWithHorsepowerRange(double lowHP, double highHP){
int matches = ZERO;
for (Lamborghini c : inventory){
if(c.getHorsepower() >= lowHP && c.getHorsepower() <= highHP){
matches++;
}
}
Lamborghini[] horsepower = new Lamborghini[matches];
int indexInArray = ZERO;
for (Lamborghini c : inventory){
if(c.getHorsepower() >= lowHP && c.getHorsepower() <= highHP){
horsepower[indexInArray] = c;
indexInArray++;
}
}
return horsepower;
}
这是我正在做的事情,我在调用时遇到错误:
c.getCarsFromThisYear(modelYear) 和 (c.getCarsWithHorsepowerRange(lowHP, highHP)
public LamborghiniCarLot[] getAllCarLotsWithAverageHorsepowerInRangeForYear(int modelYear, double lowHP, double highHP){
int matches = ZERO;
for(LamborghiniCarLot c : carLots){
if (c.getCarsFromThisYear(modelYear)){
if(c.getCarsWithHorsepowerRange(lowHP, highHP)){
matches++;
}
}
}
LamborghiniCarLot[] search = new LamborghiniCarLot[matches];
int index = ZERO;
for(LamborghiniCarLot c : carLots){
search[index] = c;
index++;
}
}
以下方法存在多个问题:
public ArrayList<Lamborghini> getCarsFromThisYear(int year){
ArrayList<Lamborghini> fromYear = new ArrayList<Lamborghini>();
for( Lamborghini c : inventory){
if(c.getModelYear() == year){
fromYear.add(c);
}
}
if( fromYear.size() == ZERO){
return new ArrayList<>();
}
return fromYear;
}
- Return
List<Lamborghini>
而不是 ArrayList<Lamborghini>
- 当 fromYear 列表的大小 "ZERO" 只是 return 您在方法的第二行实例化的数组列表。或者在
if
语句中将 ArrayList<>()
更改为 ArrayList<Laborghini>
。
这是我的建议:
public List<Lamborghini> getCarsFromThisYear(int year){
List<Lamborghini> fromYear = new ArrayList<Lamborghini>();
for( Lamborghini c : inventory){
if(c.getModelYear() == year){
fromYear.add(c);
}
}
return fromYear;
}
另一个问题是 if (c.getCarsFromThisYear(modelYear))
。方法 returns List<Lamborghini>
但 if 语句期望 boolean
值。
当我使用另一个 class 的这些方法时,我遇到了不兼容的类型错误,我应该 return 给定年份的平均马力在以下范围内的所有汽车的数组指定的范围。
这是我从另一个 class 得到的方法,其中 returns arraylist:
public ArrayList<Lamborghini> getCarsFromThisYear(int year){
ArrayList<Lamborghini> fromYear = new ArrayList<Lamborghini>();
for( Lamborghini c : inventory){
if(c.getModelYear() == year){
fromYear.add(c);
}
}
if( fromYear.size() == ZERO){
return new ArrayList<>();
}
return fromYear;
}
public Lamborghini[] getCarsWithHorsepowerRange(double lowHP, double highHP){
int matches = ZERO;
for (Lamborghini c : inventory){
if(c.getHorsepower() >= lowHP && c.getHorsepower() <= highHP){
matches++;
}
}
Lamborghini[] horsepower = new Lamborghini[matches];
int indexInArray = ZERO;
for (Lamborghini c : inventory){
if(c.getHorsepower() >= lowHP && c.getHorsepower() <= highHP){
horsepower[indexInArray] = c;
indexInArray++;
}
}
return horsepower;
}
这是我正在做的事情,我在调用时遇到错误: c.getCarsFromThisYear(modelYear) 和 (c.getCarsWithHorsepowerRange(lowHP, highHP)
public LamborghiniCarLot[] getAllCarLotsWithAverageHorsepowerInRangeForYear(int modelYear, double lowHP, double highHP){
int matches = ZERO;
for(LamborghiniCarLot c : carLots){
if (c.getCarsFromThisYear(modelYear)){
if(c.getCarsWithHorsepowerRange(lowHP, highHP)){
matches++;
}
}
}
LamborghiniCarLot[] search = new LamborghiniCarLot[matches];
int index = ZERO;
for(LamborghiniCarLot c : carLots){
search[index] = c;
index++;
}
}
以下方法存在多个问题:
public ArrayList<Lamborghini> getCarsFromThisYear(int year){
ArrayList<Lamborghini> fromYear = new ArrayList<Lamborghini>();
for( Lamborghini c : inventory){
if(c.getModelYear() == year){
fromYear.add(c);
}
}
if( fromYear.size() == ZERO){
return new ArrayList<>();
}
return fromYear;
}
- Return
List<Lamborghini>
而不是ArrayList<Lamborghini>
- 当 fromYear 列表的大小 "ZERO" 只是 return 您在方法的第二行实例化的数组列表。或者在
if
语句中将ArrayList<>()
更改为ArrayList<Laborghini>
。
这是我的建议:
public List<Lamborghini> getCarsFromThisYear(int year){
List<Lamborghini> fromYear = new ArrayList<Lamborghini>();
for( Lamborghini c : inventory){
if(c.getModelYear() == year){
fromYear.add(c);
}
}
return fromYear;
}
另一个问题是 if (c.getCarsFromThisYear(modelYear))
。方法 returns List<Lamborghini>
但 if 语句期望 boolean
值。