JAVA面向對象解決實際問題實例(一)


某次戰役中,為便於信息交互,我軍偵察部門將此次戰役的關鍵高地坐標設定為(x=0y=0)並規定,每向東增加100米,x1,每向北增加100米,y1。同時,我軍情報部門也破譯了敵軍向坦克發送的指揮信號,其中有三種信號(L,R,M)用於控制坦克的運動,L R 分別表示使令坦克向左、向右轉向,M 表示令坦克直線開進100米,其它信號如T用於時間同步,P用於位置較准。

一日,我軍偵察兵發現了敵軍的一輛坦克,偵察兵立即將坦克所在坐標(P, Q)及坦克前進方向(W:西,E:東,N:北,S:南)發送給指揮部,同時啟動信號接收器,將坦克接收到的信號實時同步發往指揮部,指揮部根據這些信息得以實時掌控了該坦克的位置,並使用榴彈炮精准地擊毀了該坦克。

假設,偵察兵發送給指揮部的信息如下:

坦克坐標:(1139

坦克運行方向:W

坦克接收到的信號為:MTMPRPMTMLMRPRMTPLMMTLMRRMP

請通過編程計算出坦克所在的位置(編程語言不限)

 

Java的實現代碼如下:

 1 package bst;
 2 
 3 public class Bst {
 4     //坦克初始坐標
 5     ZB zb = new ZB(11,39);
 6     //坦克初始運行方向
 7     String direction = "W";
 8     
 9     //根據接收到的信號編程計算出坦克最終的坐標
10     public ZB getZB(String news){
11         
12         String[] str = news.split("");
13         
14         for(int i = 0;i<str.length;i++){
15             if("L".equals(str[i])){
16                 switch (direction) {
17                 case "W":direction="S";break;
18                 case "E":direction="N";break;
19                 case "N":direction="W";break;
20                 case "S":direction="E";break;
21                 default:break;
22                 }
23             }else if("R".equals(str[i])){
24                 switch (direction) {
25                 case "W":direction="N";break;
26                 case "E":direction="S";break;
27                 case "N":direction="E";break;
28                 case "S":direction="W";break;
29                 default:break;
30                 }
31             }else if("M".equals(str[i])){
32                 switch (direction) {
33                 case "W":zb.setX(zb.getX()-1);break;
34                 case "E":zb.setX(zb.getX()+1);break;
35                 case "N":zb.setY(zb.getY()+1);break;
36                 case "S":zb.setY(zb.getY()-1);break;
37                 default:break;
38                 }
39             }
40         }
41         
42         return zb;
43         
44     }
45     
46     //打印出坦克的最終坐標
47     public static void main(String[] args) {
48         Bst bst = new Bst();
49         ZB zb = bst.getZB("MTMPRPMTMLMRPRMTPLMMTLMRRMP");
50         System.out.println("坦克所在的位置為:"+zb.toString());
51     }
52 
53 }
54 
55 //坦克坐標類
56 class ZB{
57     int x;
58     int y;
59     
60     public ZB(int x, int y) {
61         super();
62         this.x = x;
63         this.y = y;
64     }
65 
66     public int getX() {
67         return x;
68     }
69     
70     public void setX(int x) {
71         this.x = x;
72     }
73     
74     public int getY() {
75         return y;
76     }
77     
78     public void setY(int y) {
79         this.y = y;
80     }
81     
82     //重寫toString方法
83     public String toString(){
84         return "("+x+","+y+")";
85     }
86 }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM