演算法題:假設一列火車一共經過10個車站,車站按順序為 A B C D E F G H I J ,編寫一個程式,自動計算剩餘的票
假設一列火車一共經過10個車站,車站按順序為 A B C D E F G H I J ,編寫一個程式,自動計算剩餘的票 要求:1 假設火車有100個座位 2.程式可以輸入購買車票的起始站與結束站 3.輸入後,程式輸出剩餘車票, 4.如剩餘車票大於0,使用者此時可以輸入購買,購買後,車票減一, 5.依次迴圈
例如 輸入 C F 輸出 100 輸入 buy 輸出 buy ok 輸入 A J 難點 輸入 A B 輸出 99 輸出100
JAVA程式碼如下:
public class RailWay { public static List<String> lists= new ArrayList<String>(); public static int getNums(char start, char end) { int cnt = 100; Iterator<String> its = lists.iterator(); while(its.hasNext()) { String str = its.next(); char[] piaoDetail = str.toCharArray(); for(int i=0; i<piaoDetail.length; i++) { int mark = 0; for(char j=start; j<=end; j++) { if(piaoDetail[i]==j) { cnt--;mark=1;break; } } if(mark==1) break; } } return cnt; }
public static void main(String[] args) { @SuppressWarnings("resource") Scanner s = new Scanner(System.in); while(true) { System.out.println("請輸入起點:"); String a = s.next(); char start = a.toCharArray()[0]; System.out.println("請輸入終點:"); String b = s.next(); char end = b.toCharArray()[0]; if(start>='A' && end <='J') { if(getNums(start, end)>0) { System.out.println("剩餘票:" + getNums(start, end)); if(getNums(start, end) > 0) { System.out.println("確認買票輸入‘buy’"); String in = s.next(); if("buy".equalsIgnoreCase(in)) { StringBuffer sb = new StringBuffer(""); for(char i=start;i<=end ;i++) { sb.append(i); } lists.add(sb.toString()); System.out.println(sb); System.out.println("buy ok!"); System.out.println("當前庫裡存在的票有:"+lists.toString()); }else {} } }else { System.out.println("票已售罄!"); } }else { System.out.println("請輸入正確的起點、終點!"); } } } }