JAVA面向对象解决实际问题实例

Posted 德邦总管

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 }

以上是关于JAVA面向对象解决实际问题实例的主要内容,如果未能解决你的问题,请参考以下文章

Java面向对象---类与对象的关系

Java面向对象

Java入门——面向对象基础

Java——面向对象与类

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程