웹_프론트_백엔드/단과

[단과_JAVA] 2020.02.21

shine94 2020. 2. 22. 08:31

<문제>

1) Bus
   정류장이 5개가 있고, 정방향으로만 갈 수 있다.
   정류장 한 개당 1초가 걸리고 출발지는 랜덤이다.
   출발지는 마지막 정류장이 될 수 없고 도착지는
   출발지보다 앞에 있는 정류장을 선택할 수 없다.
   교통비는 1250이다.
   경로를 각각 출력한다.
   

   출력 예) 서초 > 교대 > 강남 > 도착


2) Subway
   정류장이 7개가 있고, 역방향도 갈 수 있다.
   정류장 한 개당 2초가 걸리고 출발지는 랜덤이다.
   교통비는 1250이다.
   경로를 각각 출력한다.

   

   출력 예) 강남 > 교대 > 서초 > 도착
   출력 예) 서초 > 교대 > 강남 > 도착

 

3) Taxi
   도착지를 입력받고 랜덤한 km로 진행된다.
   1~10km사이의 값으로 나오고 기본요금은 3800원
   km당 1200원씩 부여된다.
   1km당 0.5초가 걸린다.
   

   출력 예) 도착지까지 남은 거리
               3km > 2km > 1km > 도착

 

4) Stop
   main메소드가 있으며 사용자는 대중교통을
   골라서 탑승한다.

 

<코드, 아직 완성 코드 아님, 다음 시간에 완성시킬 예정>

** Bus 클래스 **

package transportation;

import java.util.Random;

import javax.swing.JOptionPane;

public class Bus {
	// private 필드는 다른 클래스에서 접근할 수 없으므로
	// public getter와 setter를 만들어 주어야 한다.
	// 따라서 외부에서 private필드에 접근하기 위해서는
	// getter, setter를 사용하거나 생성자로 접근한다.
	private String[] stops;
	private String num;

	public final int FEE = 1250;

	public int depart_idx;

	public Bus() {
	}

	public Bus(String[] stops, String num) {
		if (stops.length == 5) {
			this.stops = stops;
		} else {
			JOptionPane.showMessageDialog(null, "정류장은 5개입니다.");
			System.exit(0);
		}
		this.num = num;
	}

	public String[] getStops() {
		return stops;
	}

	public void setStops(String[] stops) {
		if (stops.length == 5) {
			this.stops = stops;
		} else {
			JOptionPane.showMessageDialog(null, "정류장은 5개입니다.");
			System.exit(0);
		}
	}

	public String getNum() {
		return num;
	}

	public void setNum(String num) {
		this.num = num;
	}

	public void start() {
		Random r = new Random();
		depart_idx = r.nextInt(stops.length - 1);
	}

	public int go(int[] money, int dest_idx) {
		int check = -1;

		if (dest_idx - depart_idx <= 0) {
			// 잘못 선택
			check = 0;
		} else {
			if (pay(money)) {
				int i = 0;
				for (i = depart_idx; i < dest_idx; i++) {
					System.out.print(stops[i] + " > ");
					try {Thread.sleep(1000);} catch (InterruptedException e) {;}
				}
				System.out.println(stops[i] + " > 도착");
				check = 1;
			}
		}
		// -1 : 잔액부족, 0 : 잘못선택, 1 : 정상
		return check;
	}

	public boolean pay(int[] money) {
		boolean check = false;
		if (money[0] - FEE >= 0) {
			money[0] -= FEE;
			JOptionPane.showMessageDialog(null, "남은 잔액 : " + money[0] + "원");
			check = true;
		}
		return check;
	}
}


** Subway 클래스 **

package transportation;

import java.util.Random;

import javax.swing.JOptionPane;

public class Subway {
	private String[] stops;
	private String num;

	public final int FEE = 1250;

	public int depart_idx;

	public Subway() {
	}

	public Subway(String[] stops, String num) {
		if (stops.length == 7) {
			this.stops = stops;
		} else {
			JOptionPane.showMessageDialog(null, "정류장은 7개입니다.");
			System.exit(0);
		}
		this.num = num;
	}

	public String[] getStops() {
		return stops;
	}

	public void setStops(String[] stops) {
		if (stops.length == 7) {
			this.stops = stops;
		} else {
			JOptionPane.showMessageDialog(null, "정류장은 7개입니다.");
			System.exit(0);
		}
	}

	public String getNum() {
		return num;
	}

	public void setNum(String num) {
		this.num = num;
	}

	public void start() {
		Random r = new Random();
		depart_idx = r.nextInt(stops.length - 1);
	}

	public int go(int[] money, int dest_idx) {
		int check = -1;

		if (dest_idx - depart_idx == 0) {
			// 잘못 선택
			check = 0;
		} else {
			if (pay(money)) {
				int i = 0;
				for (i = depart_idx; i < dest_idx; i++) {
					System.out.print(stops[i] + " > ");
					try {Thread.sleep(2000);} catch (InterruptedException e) {;}
				}
				System.out.println(stops[i] + " > 도착");
				check = 1;
			}
		}
		// -1 : 잔액부족, 0 : 잘못선택, 1 : 정상
		return check;
	}

	public boolean pay(int[] money) {
		boolean check = false;
		if (money[0] - FEE >= 0) {
			money[0] -= FEE;
			JOptionPane.showMessageDialog(null, "남은 잔액 : " + money[0] + "원");
			check = true;
		}
		return check;
	}
}

 

** Stop 메인메소드 클래스 ** 

package transportation;

import java.util.Scanner;

public class Stop {
	public static void main(String[] args) {
		String[] stops = {"서초", "교대", "강남", "역삼", "선릉"};
		int[] money = {10000};
		Bus bus_41 = new Bus(stops, "41");
		Scanner sc = new Scanner(System.in);
		
		bus_41.start();
		for (int i = 0; i < bus_41.getStops().length; i++) {
			System.out.print(i+1+bus_41.getStops()[i] + " ");
		}
		System.out.println("\n출발지 : " + bus_41.getStops()[bus_41.depart_idx]);
		System.out.println("도착할 정류소 번호를 입력하세요.");
		if(bus_41.go(money, sc.nextInt()-1) != 1) {
			System.out.println("다음 버스를 이용해주세요.");
		}
	}
}

'웹_프론트_백엔드 > 단과' 카테고리의 다른 글

[단과_JAVA] 2020.02.24  (0) 2020.02.25
[단과_C] 2020.02.21  (0) 2020.02.22
[단과_C] 2020.02.20  (0) 2020.02.21
[단과_JAVA] 2020.02.20  (0) 2020.02.20
[단과_C] 2020.02.19  (0) 2020.02.19