プログラムがユーザー入力 (プレーン ID、容量) を出力しない理由を突き止めようとしています。コードを編集して、ユーザーが印刷面の印刷面情報を選択すると正常に動作するようにしました。ただし、元の質問は重複とは異なります。planeID、容量、および目的地、出発を返そうとしています。私はすでに toString メソッドを持っていますが、別のメソッドでオーバーライドしたくありません。
基本的に、このプログラムの目標は、飛行機、飛行機の目的地/出発地、および飛行機の容量を追加することです。次に、それらが追加されたら、ユーザーに印刷したいオプションを選択させます。printAllPlanes はすべての planeID と定員を出力し、printAllFlights は planeID、定員と目的地/出発を出力し、printPlanesInfo は planeId/定員を出力します。
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
FlightServices fs = new FlightServices();
UserInput ui = new UserInput(reader, fs);
ui.start();
System.out.println("Flight Service");
System.out.println("----------");
ui.printing();
}
}
public class Airport {
private String planeId;
private int capacity;
private String dest;
private String dep;
public Airport(String planeId, int capacity) {
this.planeId = planeId;
this.capacity = capacity;
}
public Airport(String planeId, String dep, String dest) {
this.dest = dest;
this.dep = dep;
}
public String getPlaneId() {
return this.planeId;
}
public void setPlaneId(String planeId) {
this.planeId = planeId;
}
public int getCapacity() {
return this.capacity;
}
public void setCapacity(int capacity) {
this.capacity = capacity;
}
public String getDestination() {
return this.dest;
}
public void setDestination(String dest) {
this.dest = dest;
}
public String getDeparture() {
return this.dep;
}
public void setDeparture(String dep) {
this.dep = dep;
}
public String firstString() {
return planeId + " (" + capacity + ")";
}
public String secString() {
return planeId + " (" + capacity + ")" + "(" + dest + "-" + dep;
}
}
import java.util.ArrayList;
public class FlightServices {
private ArrayList<Airport> airport;
public FlightServices() {
airport = new ArrayList<Airport>();
}
public void add(String planeId, int capacity) {
airport.add(new Airport(planeId, capacity));
}
public void addFlight(String planeId, String dest, String dep) {
airport.add(new Airport(planeId, dest, dep));
}
public void printAllPlanes() {
for (Airport all : airport) {
System.out.println(all);
}
}
public void printAllFlights() {
for (Airport all : airport) {
System.out.println(all);
}
}
public void printPlanesInfo(String planeId) {
for (Airport info : airport) {
if (planeId.equals(info.getPlaneId())) {
info.toString();
}
}
}
}
import java.util.Scanner;
public class UserInput {
private Scanner reader;
private FlightServices fs;
public UserInput(Scanner reader, FlightServices fs) {
this.reader = reader;
this.fs = fs;
}
public void start() {
while (true) {
System.out.println("Choose operation: ");
System.out.println("[1] Add airplane");
System.out.println("[2] Add flight");
System.out.println("[3] Exit");
int input = Integer.parseInt(reader.nextLine());
if (input == 3) {
break;
} else if (input == 1) {
this.addPlane();
} else if (input == 2) {
this.addFlight();
}
}
}
public void addPlane() {
System.out.println("Give plane ID: ");
String id = reader.nextLine();
System.out.println("Give plane capacity: ");
int capacity = Integer.parseInt(reader.nextLine());
this.fs.add(id, capacity);
}
public void addFlight() {
System.out.println("Give plane ID: ");
String id = reader.nextLine();
System.out.println("Give departure airport code: ");
String dep = reader.nextLine();
System.out.println("Give destination airport code: ");
String des = reader.nextLine();
this.fs.addFlight(id, dep, des);
}
public void printing() {
while (true) {
System.out.println("Choose operation: ");
System.out.println("[1] Print planes");
System.out.println("[2] Print flights");
System.out.println("[3] Print plane info");
System.out.println("[4] Quit");
int command = Integer.parseInt(reader.nextLine());
if (command == 4) {
break;
} else if (command == 1) {
this.fs.printAllPlanes();
} else if (command == 2) {
this.fs.printAllFlights();
} else if (command == 3) {
this.addPlaneInfo();
}
}
}
public void addPlaneInfo() {
System.out.println("Give plane ID: ");
String id = reader.nextLine();
this.fs.printPlanesInfo(id);
}
}