생각대로 되지는 않았고
고쳐야 하는 곳이 많지만 일단은 이렇게 올렸습니다.
버스 정원이 왜 저따구로 되는지 모르겠지만 다시 고치러 돌아오도록하겠습니다.
일단 Spring이랑 자바 강의부터 마스터하러 갑니다...
Transport
public class transport { //상위 클래스 대중교통
String number; //번호
int gas = 100; //주유량: 주어진 기본값
int speed = 0; //속도: 주어진 기본값
int speedChange; //속도 변경
String status = ""; //주행 상태
int passengerMax; //최대 승객 수
int fee; //요금
//getter, setter
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public int getGas(int i) {
return gas;
}
public int setGas(int gas) {
this.gas = gas;
return gas;
}
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
}
public int getSpeedChange() {
return speedChange;
}
public void setSpeedChange(int speedChange) {
this.speedChange = speedChange;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public int getPassengerMax() {
return passengerMax;
}
public void setPassengerMax(int passengerMax) {
this.passengerMax = passengerMax;
}
public int getFee(int now2) {
return fee;
}
public void setFee(int fee) {
this.fee = fee;
}
//메서드
//운행 시작
public void start(){
System.out.println("운행 시작");
}
//속도 변경
public int changeSpeed(int change){
this.speedChange = change;
return change;
}
//상태 변경
public String statuschange(String statusChange){
this.status = statusChange;
return statusChange;
}
//max passenger call
public int callPassengerMax(){
return passengerMax;
}
//주유 하기
public int addgas(int addgas){
return this.gas += addgas;
}
}
Bus
public class Bus extends transport{
int passengerNow=0; //현재 승객 수
Bus() {}; //기본 생성자 선언
//getter, setter
public int getPassengerNow() {
return passengerNow;
}
public int setPassengerNow(int passengerNow) {
this.passengerNow = passengerNow;
return passengerNow;
}
//승객 탑승 가능 여부
public boolean boardingcheck(){
return super.callPassengerMax() >= passengerNow;
}
//승객수 추가
//승객 탑승
//탑승가능체크도 다 따로 케이스 만들어서 해보자
public int boarding(int passenger) {
if ((passengerNow += passenger)<= super.callPassengerMax()){
if (status.equals("운행중")) {
System.out.println("승객 " + passenger + "명이 탑승하였습니다");
System.out.println("총 탑승 승객: " + this.passengerNow + "명");
}
} else {
System.out.println("정원이 초과되었습니다.");
}
return this.passengerNow;
}
// 잔여 승객 수
public int available(int passengerNow){
return super.callPassengerMax()-this.passengerNow;
}
//버스 요금
public int busfee(int passengers){
return this.fee = (passengers*1000);
}
//주유 알람
//연료가 10이상일때 운행 가능
boolean leftFuel() {
return this.gas >= 10;
}
boolean isRunning() {
if(!status.equals("운행중")){ //운행 종료 시 차고지행
super.setStatus("차고지행");
}
if(leftFuel()) { //운행중 연료 체크
System.out.println("주유량이 " +this.gas + " 남았습니다." );
return true;
}
if(!leftFuel()) { //주유량이 떨어지면 차고지행
System.out.println("주유가 필요합니다."); //경고메세지
super.setStatus("차고지행");
}
return true;
}
//속도 변경
public int speedChange(int speedChange){
if(leftFuel()){
speed += speedChange;
}
System.out.println("현재 주행속도는 "+speed+"km/hr 입니다.");
return speed;
}
}
Taxi
public class Taxi extends transport {
String destination="";
int basicDistance;
int distancetoDes;
int basicfee =3000; //기본요금
int passengerNow;
Taxi() {};
Taxi(
String number,
int gas,
int speed,
String destination,
int basicDistance,
int distancetoDes,
int fee,
int basicfee,
int passengerMax,
String status,
int passengerNow
){
this.number =number;
this.gas = 100;
this.speed = 0;
this.destination = destination;
this.basicDistance =1000;
this.distancetoDes = distancetoDes;
this.fee = 1000;
this.basicfee = basicfee;
this.status = "일반";
this.passengerMax = 4;
this.passengerNow = passengerNow;
}
//getter setter
public String getDestination() {
return destination;
}
public void setDestination(String destination) {
this.destination = destination;
}
public int getBasicDistance() {
return basicDistance;
}
public void setBasicDistance(int basicDistance) {
this.basicDistance = basicDistance;
}
public int getDistancetoDes() {
return distancetoDes;
}
public void setDistancetoDes(int distancetoDes) {
this.distancetoDes = distancetoDes;
}
public int getBasicfee() {
return basicfee;
}
public void setBasicfee(int basicfee) {
this.basicfee = basicfee;
}
public int getPassengerNow() {
return passengerNow;
}
public void setPassengerNow(int passengerNow) {
this.passengerNow = passengerNow;
}
//메서드
//택시 요금 계산
public int finalFee(int distancetoDes){
int finalFee = basicfee+fee*(distancetoDes-basicDistance);
System.out.println("최종 요금은 "+finalFee+"입니다.");
return finalFee;
}
//탑승 가능 여부
public boolean boardingcheck(){
return passengerNow==0;
}
//승객수 추가
public int addPassenger(int addPassenger){
this.passengerNow += addPassenger;
return this.passengerNow;
}
//승객 탑승
public int boarding(int passenger){
while(boardingcheck()){
if(status.equals("운행")){
System.out.println("승객"+addPassenger(passenger)+"명이 탑승하였습니다");
System.out.println("총 탑승승객: "+passengerNow+"명");
super.setStatus("운행 중");
}
break;
}
if(!boardingcheck()){
int overPassenger = (addPassenger(passenger)+passengerNow)-passengerMax;
System.out.println(overPassenger+"명 초과");
System.out.println("탑승 불가");
super.setStatus("탑승 불가");
}
return passengerNow;
}
}
Operation
import java.util.Scanner;
public class Operation {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("이동수단을 선택해주세요.");
System.out.println("1. 택시 타기");
System.out.println("2. 버스 타기");
System.out.print("선택 >>");
int option =0;
option = scanner.nextInt();
while(true){
if(option==2){
Bus bus1 = new Bus(); //새로운 버스 1
bus1.setNumber("항해99");
String bus1Number = bus1.getNumber();
Bus bus2 = new Bus(); //새로운 버스 2
bus2.setNumber("헤엘666");
String bus2Number = bus2.getNumber();
System.out.println("버스 2대 중 선택해주세요.");
System.out.println("1. 항해99");
System.out.println("2. 헤엘666");
int option2 =0;
option2 = scanner.nextInt();
if(option2==1){
int passnum1 = bus1.getPassengerNow();
bus1.setPassengerMax(30);
bus1.setStatus("운행중");
int pass1 = 2;
bus1.boarding(pass1);
int passengerNow = bus1.getPassengerNow();
System.out.println("잔여 승객 수는 "+ bus1.available(pass1)+"명 입니다.");
int busfee1 = bus1.busfee(pass1);
System.out.println("버스 요금은 "+busfee1+"원 입니다.");
System.out.println();
System.out.println();
System.out.println("버스 기사가 주유량을 체크합니다.");
int gas1 = bus1.setGas(50);
bus1.isRunning();
System.out.println("버스 기사가 차고지로 향합니다.");
bus1.statuschange("차고지행");
System.out.println();
System.out.println("-----차고지-----");
int addgas1 = bus1.addgas(10);
System.out.println("주유량이 "+ addgas1+ "로 변했습니다.");
bus1.statuschange("운행중");
System.out.println();
System.out.println("다음 정류장에 도착했습니다.");
int pass2 = 45;
bus1.boarding(pass2);
System.out.println("정원초과여서 정류장을 지나칩니다.");
System.out.println();
System.out.println("다음 정류장에 도착했습니다.");
int pass3 = 5;
bus1.boarding(pass3);
int now2 = bus1.getPassengerNow();
System.out.println(now2);
System.out.println("잔여 승객 수는 "+ bus1.available(now2)+"명 입니다.");
int busfee2 = bus1.busfee(pass3);
System.out.println("버스 요금은 "+busfee2+"원 입니다.");
int minusgas = bus1.addgas(-55);
System.out.println("주유량이 " + minusgas + "로 변했습니다.");
bus1.isRunning();
System.out.println(bus1.getStatus());
}
}
break;
}
}
}