2012-08-13 88 views
0

我正在扶植一個程序來幫助我跟蹤工作里程。我只能前往特定的地點。我做了一個開關,包括我可能擁有的所有可能的開始和結束位置,以及它們的距離。現在當我運行我的程序時,會彈出一個窗口,詢問我是否去過每個位置。我必須每次輸入結束位置作爲下一個起始位置。我希望能夠輸出一個長字符串(例如:location1> location2 + location3> location4)並計算總里程。 Java - 正在尋找分離字符

import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Scanner; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JTextField; public class Main extends JFrame { public static void main(String[] agrs) { double total = 0; double d = 0; int c = 0; int t = 0; //Scanner input = new Scanner(System.in); // Scanner input1 = new Scanner(System.in); // String place; JOptionPane.showMessageDialog(null, "MILEAGE CALCULATOR \n\nLocations: ADMIN, AE, BE, CE, CHS, CJHS, IE, NSE, PKE, RHS, SMS, SPE \nFormat: Location1>Location2"); // JOptionPane.showMessagedialog(null,"Locations: ADMIN, AE, BE, CE, CHS, CJHS, IE, NSE, PKE, RHS, SMS, SPE"); //System.out.println("MILAGE CALCULATOR \nLocations: ADMIN, AE, BE, CE, CHS, CJHS, IE, NSE, PKE, RHS, SMS, SPE \nFormat: LOCATION1>LOCATION2"); t = Integer.parseInt(JOptionPane.showInputDialog(null, "How many places did you go to from the admin building?")); //t = input.nextInt(); //t++; // System.out.println(t); // System.out.println(c); while (t > c) { String place = JOptionPane.showInputDialog(null, "where did you go?"); //String place = input.nextLine(); // place.equalsIgnoreCase(place); d=0; switch (place.toUpperCase()) { case "ADMIN>AE": case "AE>ADMIN": d = 7; break; case "ADMIN>BE": case "BE>ADMIN": d = 2.8; break; case "ADMIN>CE": case "CE>ADMIN": d = 1.5; break; case "ADMIN>CHS": case "CHS>ADMIN": d = .6; break; case "ADMIN>CJHS": case "CJHS>ADMIN": d = 1.5; break; case "ADMIN>IE": case "IE>ADMIN": d = 2.3; break; case "ADMIN>NSE": case "NSE>ADMIN": d = 4.5; break; case "ADMIN>PKE": case "PKE>ADMIN": d = 2.6; break; case "ADMIN>RHS": case "RHS>ADMIN": d = 1.5; break; case "ADMIN>SMS": case "SMS>ADMIN": d = 3.9; break; case "ADMIN>SPE": case "SPE>ADMIN": d = 3.2; break; case "AE>BE": case "BE>AE": d = 9.5; break; case "AE>CE": case "CE>AE": d = 6.3; break; case "AE>CHS": case "CHS>AE": d = 7.6; break; case "AE>CJHS": case "CJHS>AE": d = 6.3; break; case "AE>IE": case "IE>AE": d = 6.3; break; case "AE>NSE": case "NSE>AE": d = 8; break; case "AE>PKE": case "PKE>AE": d = 7.6; break; case "AE>RHS": case "RHS>AE": d = 6.3; break; case "AE>SMS": case "SMS>AE": d = 8.2; break; case "AE>SPE": case "SPE>AE": d = 7.5; break; case "BE>CE": case "CE>BE": d = 3.7; break; case "BE>CHS": case "CHS>BE": d = 2.7; break; case "BE>CJHS": case "CJHS>BE": d = 3.7; break; case"BE>IE": case "IE>BE": d = 5; break; case "BE>NSE": case "NSE>BE": d = 4.2; break; case "BE>PKE": case "PKE>BE": d = 2.8; break; case "BE>RHS": case "RHS>BE": d = 3.7; break; case "BE>SMS": case "SMS>BE": d = 4.2; break; case "BE>SPE": case "SPE>BE": d = 7.4; break; case "CE>CHS": case "CHS>CE": d = 1.9; break; case "CE>CJHS": case "CJHS>CE": d = 0; break; case "CE>IE": case "IE>CE": d = 2.5; break; case "CE>NSE": case "NSE>CE": d = 3.5; break; case "CE>PKE": case "PKE>CE": d = 2.3; break; case "CE>RHS": case "RHS>CE": d = 0; break; case "CE>SMS": case "SMS>CE": d = 3.7; break; case "CE>SPE": case "SPE>CE": d = 3.3; break; case "CHS>CJHS": case "CJHS>CHS": d = 1.8; break; case "CHS>IE": case "IE>CHS": d = 2.9; break; case "CHS>NSE": case "NSE>CHS": d = 3.2; break; case "CHS>PKE": case "PKE>CHS": d = 2; break; case "CHS>RHS": case "RHS>CHS": d = 1.9; break; case "CHS>SMS": case "SMS>CHS": d = 3.3; break; case "CHS>SPE": case "SPE>CHS": d = 3.8; break; case "CJHS>IE": case "IE>CJHS": d = 2.5; break; case "CJHS>NSE": case "NSE>CJHS": d = 4.3; break; case "CJHS>PKE": case "PKE>CJHS": d = 2.3; break; case "CJHS>RHS": case "RHS>CJHS": d = 0; break; case "CJHS>SMS": case "SMS>CJHS": d = 3.7; break; case "CJHS>SPE": case "SPE>CJHS": d = 3.3; break; case "IE>NSE": case "NSE>IE": d = 5.8; break; case "IE>PKE": case "PKE>IE": d = 4.6; break; case "IE>RHS": case "RHS>IE": d = 2.5; break; case "IE>SMS": case "SMS>IE": d = 6; break; case "IE>SPE": case "SPE>IE": d = 3.1; break; case "NSE>PKE": case "PKE>NSE": d = 1.3; break; case "NSE>RHS": case "RHS>NSE": d = 3.5; break; case "NSE>SMS": case "SMS>NSE": d = .2; break; case "NSE>SPE": case "SPE>NSE": d = 7.2; break; case "PKE>RHS": case "RHS>PKE": d = 2.2; break; case "PKE>SMS": case "SMS>PKE": d = 1.5; break; case "PKE>SPE": case "SPE>PKE": d = 5.5; break; case "RHS>SMS": case "SMS>RHS": d = 3.7; break; case "RHS>SPE": case "SPE>RHS": d = 3.3; break; case "SMS>SPE": case "SPE>SMS": d = 7.4; break; } // System.out.println(total); total = d + total; // System.out.println(total); // JOptionPane.showMessageDialog("miles Driven ", d+total); c++; } JOptionPane.showMessageDialog(null, "Miles Driven: " + total); //System.out.println(total); } }
+0

如果你輸入了類似於「location1> location2> location3」的東西,你可以分割>字符並通過獲取當前元素之後的循環來處理它。當你找不到下一個元素時,你知道要停下來。 – jaimerump 2012-08-13 20:49:03

+0

@jaimerump我認爲這是他的實際問題。如何找到分隔符並在那裏分割。 – ATaylor 2012-08-14 04:49:45

+0

@jaimerum,這就是我想要做的,但我不知道如何。 – nickfurlo 2012-08-14 13:08:19

回答

0

你可以這樣做:

int total = 0; 
String[] places = place.split(">"); //Split your input string place into a list 
for(int i = 0; i < places.length - 1; i++){ 
    String leg = places[i] + ">" + places[i+1]; //Create string representing this leg of the journey 

    //Figure out the length of this leg of the journey using your switch statement 

    total += d; //d is the variable you were using in the switch 

} 

所以,如果你輸入「AE>管理員> BE> CJHS」循環的第一次迭代將設置情況AE>管理和使用您的開關設置距離爲7,總數爲7,第二次通過應該得到管理員> BE,距離= 2.8和總數= 9.8,第三次迭代BE> CJHS,距離= 3.7和總數= 13.5如果我正在做我的心理數學。然後,我會增加到3,並且由於數組的長度只有4,它將退出循環。

如果你想以不同的方式格式化你的字符串,這裏是字符串類的Java文檔,它是分割方法。 http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/String.html#split(java.lang.String

+0

你是不是要把「String [] places = places.split(」>「);」 ? – nickfurlo 2012-08-15 19:50:33

+0

和大小寫呢?那應該是這個字符串的名字? – nickfurlo 2012-08-15 19:52:40

+0

@nickfurlo字符串的地方是他用於輸入字符串的名稱,所以我想我可能會一致,我只是意識到我無法指定變量的情況下,因爲這是一個保留的關鍵字。但是,我所命名的變量的變量應該是代表您行程的單個部分的字符串的名稱。我只是更新了變量名稱,使它們更適合並添加了註釋。 – jaimerump 2012-08-15 20:23:30