[英]how to return value in a method in Java
我有一个关于在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());
第三个值是position,这意味着mazda和honda具有相同的位置,应该同时打印两者,但是当我运行它时,它仅打印mazda,我很困惑,请指教,加油!
您只能从方法中返回一个值。 但是您可以返回一个List
:
public List<Car> find(double position) {
List<Car> ret = new ArrayList<Car>();
for (Car c : cars)
if (c.getPosition() == position)
ret.add(c);
return ret;
}
如果这是您要做的一切,那么您将获得以下输出:
[mazda, toyota]
如果您希望每个人都分开一行,则需要遍历main
的列表并打印每个人:
for (Car c : race.find(1.0))
System.out.println(c.getName());
两个问题:1,您只能从一种方法返回一个Object
,以及2,您的方法在找到所需位置的Car
时立即返回。 如果您希望能够打印多辆车,则需要查看退货类型并进行一些调整。
相反,请执行以下操作:
public List<Car> find(double position){
List<Car> cars = new ArrayList<Car>();
for(Car d:cars){
if(d.getPosition()==position){
cars.add(d);
}
}
return cars;
}
然后,您需要在main()
方法中进行一些迭代以打印出每辆返回的汽车,如下所示:
for(Car car : race.find(1.0))
{
System.out.println(car.getName());
}
您需要将返回类型从Car
更改为Set<Car>
。 原因是,当您找到第一辆汽车(在本例中为mazda)时,将执行行return d;
。 这意味着功能已结束。 您需要做的是在函数中局部声明一个Set<Car>
,并在编写return d
时编写Set.add(d);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.