<문제>
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 |