Java 从构造函数和方法输入数据
我正在创建一些飞机预订系统。我想已经保存了一些用户,我就是这样做的:Java 从构造函数和方法输入数据,java,arraylist,Java,Arraylist,我正在创建一些飞机预订系统。我想已经保存了一些用户,我就是这样做的: Passengers passenger1 = new Passengers("John", "Slavic", "john@gmail.com", 3000, true); 此外,我还要在ArrayList: ArrayList<Passengers> passengersArrayList = new ArrayList<>(); pa
Passengers passenger1 = new Passengers("John", "Slavic", "john@gmail.com", 3000, true);
此外,我还要在ArrayList:
ArrayList<Passengers> passengersArrayList = new ArrayList<>();
passengersArrayList.add(passenger1);
(我还有其他问题,但这一点对我的问题很重要)
PassengerControllerImpl
是类,而addNewPassenger
是方法,其外观如下:
public class PassengersControllerImpl implements PassengersController{
final Scanner scanner = new Scanner(System.in);
final Passengers passengers = new Passengers();
@Override
public void addNewPassenger() {
System.out.println("Creating new passenger!");
System.out.print("Add name of passenger: ");
passengers.setName(scanner.nextLine());
System.out.print("Add last name of passenger: ");
passengers.setLastName(scanner.nextLine());
System.out.print("Add email of passenger: ");
passengers.setEmail(scanner.nextLine());
System.out.print("Add balance of passenger: ");
passengers.setBalance(scanner.nextDouble());
System.out.print("Is passenger vip? (true or false): ");
passengers.setVip(scanner.nextBoolean());
System.out.println("You added a new passenger!");
ArrayList<Passengers> passengersList = new ArrayList<>();
passengersList.add(passengers);
}
}
公共类PassengersControllerImpl实现PassengersController{
最终扫描仪=新扫描仪(System.in);
最终乘客=新乘客();
@凌驾
公共无效添加新乘客(){
System.out.println(“创建新乘客!”);
系统输出打印(“添加乘客姓名:”);
.setName(scanner.nextLine());
系统输出打印(“添加乘客姓氏:”);
.setLastName(scanner.nextLine());
系统输出打印(“添加乘客电子邮件:”);
setEmail(scanner.nextLine());
系统输出打印(“添加乘客余额:”);
乘客.setBalance(scanner.nextDouble());
系统输出打印(“是否乘客vip?(正确或错误):”;
setVip(scanner.nextBoolean());
System.out.println(“您添加了一名新乘客!”);
ArrayList PassengerList=新的ArrayList();
乘客列表。添加(乘客);
}
}
正如您看到的最后两行代码,这就是我在程序运行时创建乘客时如何保存乘客的方式。我的问题是,当我运行程序并使用该方法手动添加乘客时,如何从main方法将新乘客添加到我已经创建的数组列表中?虽然我不确定您要问什么,但我会将已经存在的ArrayList作为参数传递给addNewPassenger()方法 以下是我将如何实施它:
case 3:
passengersControllerImpl.addNewPassenger(passengersArrayList);
break;
在这里,在乘客控制器mpl课程中:
@Override
public void addNewPassenger(ArrayList<Passengers> arr) {
System.out.println("Creating new passenger!");
System.out.print("Add name of passenger: ");
passengers.setName(scanner.nextLine());
System.out.print("Add last name of passenger: ");
passengers.setLastName(scanner.nextLine());
System.out.print("Add email of passenger: ");
passengers.setEmail(scanner.nextLine());
System.out.print("Add balance of passenger: ");
passengers.setBalance(scanner.nextDouble());
System.out.print("Is passenger vip? (true or false): ");
passengers.setVip(scanner.nextBoolean());
System.out.println("You added a new passenger!");
arr.add(passengers);
}
@覆盖
公共无效添加新乘客(ArrayList arr){
System.out.println(“创建新乘客!”);
系统输出打印(“添加乘客姓名:”);
.setName(scanner.nextLine());
系统输出打印(“添加乘客姓氏:”);
.setLastName(scanner.nextLine());
系统输出打印(“添加乘客电子邮件:”);
setEmail(scanner.nextLine());
系统输出打印(“添加乘客余额:”);
乘客.setBalance(scanner.nextDouble());
系统输出打印(“是否乘客vip?(正确或错误):”;
setVip(scanner.nextBoolean());
System.out.println(“您添加了一名新乘客!”);
到达(乘客);
}
导致新乘客添加到原始ArrayList PassengerArrayList
如果有帮助,请告诉我:)你能分享一下你的主要方法吗 这看起来像是一个范围问题。首先,我假设
ArrayList<Passengers> passengersArrayList = new ArrayList<>();
passengersArrayList.add(passenger1);
你的主要方法是什么
在这种情况下,更好的解决方案如下:
public class PassengersControllerImpl implements PassengersController{
final Scanner scanner = new Scanner(System.in);
// Remove, not needed final Passengers passengers = new Passengers();
// Set return type to be Passengers
@Override
public Passengers addNewPassenger() {
System.out.println("Creating new passenger!");
Passengers passengers = new Passengers();
System.out.print("Add name of passenger: ");
passengers.setName(scanner.nextLine());
System.out.print("Add last name of passenger: ");
passengers.setLastName(scanner.nextLine());
System.out.print("Add email of passenger: ");
passengers.setEmail(scanner.nextLine());
System.out.print("Add balance of passenger: ");
passengers.setBalance(scanner.nextDouble());
System.out.print("Is passenger vip? (true or false): ");
passengers.setVip(scanner.nextBoolean());
System.out.println("You added a new passenger!");
return passengers;
}
}
这样,在main方法中,可以调用passengersArrayList.add(passengersControllerImpl.addNewPassenger())
以前代码的问题是您没有对乘客对象执行任何操作。如果设置返回类型,则可以使用类返回对象并将其添加到列表中您需要将乘客列表存储在变量中,因为在您的方法中,乘客列表仅存在于一个输入中,而另一个是为另一个输入创建的 你应该这样做:
public class PassengersControllerImpl implements PassengersController{
final Scanner scanner = new Scanner(System.in);
// Remove, not needed final Passengers passengers = new Passengers();
// Set return type to be Passengers
@Override
public Passengers addNewPassenger() {
System.out.println("Creating new passenger!");
Passengers passengers = new Passengers();
System.out.print("Add name of passenger: ");
passengers.setName(scanner.nextLine());
System.out.print("Add last name of passenger: ");
passengers.setLastName(scanner.nextLine());
System.out.print("Add email of passenger: ");
passengers.setEmail(scanner.nextLine());
System.out.print("Add balance of passenger: ");
passengers.setBalance(scanner.nextDouble());
System.out.print("Is passenger vip? (true or false): ");
passengers.setVip(scanner.nextBoolean());
System.out.println("You added a new passenger!");
return passengers;
}
}
final Scanner=新扫描仪(System.in);
最终ArrayList PassengerList=新ArrayList();
@凌驾
公共无效添加新乘客(){
最终乘客=新乘客();
System.out.println(“创建新乘客!”);
系统输出打印(“添加乘客姓名:”);
.setName(scanner.nextLine());
系统输出打印(“添加乘客姓氏:”);
.setLastName(scanner.nextLine());
系统输出打印(“添加乘客电子邮件:”);
setEmail(scanner.nextLine());
系统输出打印(“添加乘客余额:”);
乘客.setBalance(scanner.nextDouble());
系统输出打印(“是否乘客vip?(正确或错误):”;
setVip(scanner.nextBoolean());
System.out.println(“您添加了一名新乘客!”);
乘客列表。添加(乘客);
}
}
你理解得很好,就是这样!
public class PassengersControllerImpl implements PassengersController{
final Scanner scanner = new Scanner(System.in);
// Remove, not needed final Passengers passengers = new Passengers();
// Set return type to be Passengers
@Override
public Passengers addNewPassenger() {
System.out.println("Creating new passenger!");
Passengers passengers = new Passengers();
System.out.print("Add name of passenger: ");
passengers.setName(scanner.nextLine());
System.out.print("Add last name of passenger: ");
passengers.setLastName(scanner.nextLine());
System.out.print("Add email of passenger: ");
passengers.setEmail(scanner.nextLine());
System.out.print("Add balance of passenger: ");
passengers.setBalance(scanner.nextDouble());
System.out.print("Is passenger vip? (true or false): ");
passengers.setVip(scanner.nextBoolean());
System.out.println("You added a new passenger!");
return passengers;
}
}