【发布时间】:2013-10-15 20:08:07
【问题描述】:
我有一个问题,关于在 main 方法中调用方法时如何返回值,这是我的部分代码:
import java.util.ArrayList;
public class Race {
private ArrayList<Car>cars;
public Race(){
cars=new ArrayList<Car>();
}
public Car find(double position){
for(Car d:cars){
if(d.getPosition()==position){
return d;
}
}
return null;
}
.................
当我在主类中调用 find 方法时:
public class Test {
public static void main(String[] args) {
Race race=new Race();
Car mazda=new Car("Mazda",1.0,1.0,2.0,2.0);
Car honda=new Car("Honda",1.0,1.0,1.0,2.0);
race.addCars(mazda);
race.addCars(honda);
System.out.println(race.find(1.0).getName());
第三个值是位置,意思是mazda和honda的位置是一样的,应该都打印出来,但是我运行的时候,却只打印mazda,很迷茫,请指教,加油!
【问题讨论】:
-
附带说明,您不应该使用
d.getPosition()==position,因为浮点数的精度有限,无法像那样进行比较。要么使用整数,要么使用Math.abs(d.getPosition()-position) < 0.000001。 -
返回一个集合或将其作为参数传递给方法