zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    Android 5.0以下系统支持TLS 1.1/1.2协议版本
    Java & Android未捕获异常处理机制
    Oppo Reno2 不允许安装非正式签名应用
    Android ADB 实用总结
    Android Studio中的非项目文件及项目目录下的全局搜索
    Android开发中网络代理设置实用总结
    基于时间偏差思路下的时间周期度量
    nodejs anywhere 搭建本地静态文件服务
    Android 支持库迁移到AndroidX
    项目Gradle版本从4.4升级到4.6
  • 原文地址:https://www.cnblogs.com/zhncnblogs/p/8961640.html
Copyright © 2011-2022 走看看