Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用不同类中的方法打印数组列表| JAVA_Java_Constructor - Fatal编程技术网

使用不同类中的方法打印数组列表| JAVA

使用不同类中的方法打印数组列表| JAVA,java,constructor,Java,Constructor,我有两个java类 public class FlightManager extends Flight public class Aircraft implements Comparable<Aircraft> 如何创建一个Aircraft对象并将该ArrayList传递给它的构造函数(如果正确的话)并使用print方法打印所有条目 谢谢你的帮助 您的飞机列表在FlightManager中,您显示您也在其中添加了printalAircraft()。您需要迭代您的飞机列表,并在每个

我有两个java类

public class FlightManager extends Flight
public class Aircraft implements Comparable<Aircraft> 
如何创建一个Aircraft对象并将该ArrayList传递给它的构造函数(如果正确的话)并使用print方法打印所有条目


谢谢你的帮助

您的飞机列表在FlightManager中,您显示您也在其中添加了printalAircraft()。您需要迭代您的飞机列表,并在每个列表上调用print,因此类似这样的方法应该可以工作:

public void printAllAircraft() {
    for(Aircraft currentPlane : this.airplanes){
        currentPlane.print();
    }
}

您的飞机列表在FlightManager中,您显示您也在其中添加了printalAircraft()。您需要迭代您的飞机列表,并在每个列表上调用print,因此类似这样的方法应该可以工作:

public void printAllAircraft() {
    for(Aircraft currentPlane : this.airplanes){
        currentPlane.print();
    }
}

在您的
FlightManager
类中,您可以执行以下操作:

ArrayList<Aircraft> airplanes = new ArrayList<Aircraft>();

public FlightManager() {
    // Create some aircraft types with max seat capacities
    airplanes.add(new Aircraft(85, "Boeing 737"));
    airplanes.add(new Aircraft(180, "Airbus 320"));
    airplanes.add(new Aircraft(37, "Dash-8 100"));
    airplanes.add(new Aircraft(12, "Bombardier 5000"));
    airplanes.add(new Aircraft(592, 14, "Boeing 747"));
    printAllAircraft(airplanes);
}
// Prints all aircraft in airplanes array list. 
// See class Aircraft for a print() method

public void printAllAircraft(ArrayList<Aircraft> airCraftList) {
   airCraftList.forEach((ac) -> ac.print());
}
ArrayList airplanes=new ArrayList();
公共航班经理(){
//创建一些具有最大座位容量的飞机类型
飞机。增加(新飞机(85,“波音737”);
飞机。增加(新飞机(180架,“空中客车320”);
飞机。增加(新飞机(37,“Dash-8100”);
飞机。增加(新飞机(12架,“庞巴迪5000”);
新增(新飞机(592,14,“波音747”);
飞机;
}
//打印飞机阵列列表中的所有飞机。
//有关print()方法,请参见class Aircraft
公共无效打印飞机(ArrayList飞机列表){
airCraftList.forEach((ac)->ac.print());
}

我在constructor上添加了对象,因此您可以在任何地方使用它,但是您可以使用
FlightManager
类上的全局
airplanes
变量,您可以执行以下操作:

ArrayList<Aircraft> airplanes = new ArrayList<Aircraft>();

public FlightManager() {
    // Create some aircraft types with max seat capacities
    airplanes.add(new Aircraft(85, "Boeing 737"));
    airplanes.add(new Aircraft(180, "Airbus 320"));
    airplanes.add(new Aircraft(37, "Dash-8 100"));
    airplanes.add(new Aircraft(12, "Bombardier 5000"));
    airplanes.add(new Aircraft(592, 14, "Boeing 747"));
    printAllAircraft(airplanes);
}
// Prints all aircraft in airplanes array list. 
// See class Aircraft for a print() method

public void printAllAircraft(ArrayList<Aircraft> airCraftList) {
   airCraftList.forEach((ac) -> ac.print());
}
ArrayList airplanes=new ArrayList();
公共航班经理(){
//创建一些具有最大座位容量的飞机类型
飞机。增加(新飞机(85,“波音737”);
飞机。增加(新飞机(180架,“空中客车320”);
飞机。增加(新飞机(37,“Dash-8100”);
飞机。增加(新飞机(12架,“庞巴迪5000”);
新增(新飞机(592,14,“波音747”);
飞机;
}
//打印飞机阵列列表中的所有飞机。
//有关print()方法,请参见class Aircraft
公共无效打印飞机(ArrayList飞机列表){
airCraftList.forEach((ac)->ac.print());
}

我在constructor上添加了对象,因此您可以在任何地方使用它,但是您可以使用您在这里拥有的全局
airplanes
变量,您肯定可以利用lambda表达式。
特别是,
ArrayList
类包含方法
forEach
,该方法接受
java.util.function.Consumer
对象。基本上,
Consumer
只是一个功能接口,它公开了一个名为
accept
的方法,该方法不返回值,只执行您想要的东西。
因此,一旦您传递了
消费者
(lambda表达式)的实现,
forEach
确保您的函数应用于列表的每个元素。
在您的情况下,一切都在手边,只需以以下方式实现
printalAircraft

public void printAllAircraft() {
    airplanes.forEach(s -> s.print());
}

依我拙见,lambda表达式技术比用
for
迭代整个列表更高效、更时尚。在这里,您完全可以利用lambda表达式。
特别是,
ArrayList
类包含方法
forEach
,该方法接受
java.util.function.Consumer
对象。基本上,
Consumer
只是一个功能接口,它公开了一个名为
accept
的方法,该方法不返回值,只执行您想要的东西。
因此,一旦您传递了
消费者
(lambda表达式)的实现,
forEach
确保您的函数应用于列表的每个元素。
在您的情况下,一切都在手边,只需以以下方式实现
printalAircraft

public void printAllAircraft() {
    airplanes.forEach(s -> s.print());
}

以我的拙见,lambda表达式技术比使用
for

迭代整个列表更高效、更时尚。非常感谢,您的解决方案也很有效,但我不需要使用参数,谢谢!好的,我只是把它放在那里,因为这是你问的;)非常感谢,您的解决方案也很有效,但我不需要使用参数,谢谢!好的,我只是把它放在那里,因为这是你问的;)你真的不想在
飞机中使用
print()
方法。通常正确的方法是重写
toString()
,生成字符串表示,并让调用方决定如何打印它。您不知道在
Aircraft#print()
中如何调用它。。。假设调用者想要输出到一个文件,你已经阻止了这一点。明白了!但是上面的方法说明我需要使用
airpair
中的
print()
。谢谢你的解释!我希望你的老师稍后解释说,像这样的
print()
方法通常是一种糟糕的设计。你真的不想在
飞机中使用
print()
方法。通常正确的方法是重写
toString()
,生成字符串表示,并让调用方决定如何打印它。您不知道在
Aircraft#print()
中如何调用它。。。假设调用者想要输出到一个文件,你已经阻止了这一点。明白了!但是上面的方法说明我需要使用
airpair
中的
print()
。谢谢你的解释!我希望你的老师稍后解释说,像那样的
print()
方法通常是一个糟糕的设计。不客气!不客气!