题目描述
开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。

输入:

合法坐标为A(或者D或者W或者S) + 数字(两位以内)

坐标之间以;分隔。

非法坐标点需要进行丢弃。如AA10; A1A; %; YAD; 等。

下面是一个简单的例子 如:

A10;S20;W10;D30;X;A1A;B10A11;;A10;

处理过程:

起点(0,0)

  • A10 = (-10,0)

  • S20 = (-10,-20)

  • W10 = (-10,-10)

  • D30 = (20,-10)

  • x = 无效

  • A1A = 无效

  • B10A11 = 无效

  • 一个空 不影响

  • A10 = (10,-10)

结果 (10, -10)

package com.example.demo.main;import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class Demo {private static final Pattern pattern = Pattern.compile("[a-zA-Z]{1}[0-9]{1,2}");public static void main(String[] args) {Scanner scanner=new Scanner(System.in);String string = scanner.nextLine();//对输入进行分割String[] split = string.split(";");//初始化坐标int x=0;int y=0;for(String sp:split){//验证输入的有效性Matcher matcher = pattern.matcher(sp);boolean matches = matcher.matches();if(!matches){continue;}String[] split1 = sp.split("");String string1 = split1[0];StringBuilder stringBuilder=new StringBuilder();for(int i=1;i<split1.length;i++){stringBuilder.append(split1[i]);}String string2 = stringBuilder.toString();int i = Integer.parseInt(string2);switch (string1.toUpperCase()){case "A":{x-=i;break;}case "D":{x+=i;break;}case "W":{y+=i;break;}case "S":{y-=i;break;}default:{break;}}}System.out.println(x+","+y);}
}

测试用例:

用例:
A37;S1;S72;S41;W21;W32;A45;A98;D97;D69;W57;W11;S41;S0;S24;S83;A75;W77;S32;D18;A24;D20;A65;D95;S18;W56;A84;W30;S3;S50;D64;S84;D82;A86;A36;S85;S94;W64;W62;A12;W12;S84;W29;A52;A73;W55;W71;D43;D76;D49;W19;S56;W63;W56;A68;D68;D40;A48;W5;A12;S84;A2;S44;A93;D51;D64;S4;W32;W27;W15;W70;A47;S77;S88;A25;D51;D8;A34;A71;A5;D83;S36;S72;A34;D46;S29;S5;W57;W16;S42;A23;A30;D43;S0;W62;A34;D60;D31;W89;W91;S87;A15;S15;S18;W83;S82;W87;W73;D42;A92;D48;A65;D36;A11;W50;W38;W2;A0;D65;W29;D56;S64;D31;W8;A56;A45;A56;W54;A97;D97;A90;S72;A95;A89;S78;A35;A31;W68;W42;A73;S73;A24;S28;D69;W53;S54;D80;D27;W24;S86;A17;A36;A41;A1;D19;S53;S96;A31;A52;A63;A18;S54;A35;A82;W95;D8;W48;S75;W11;S9;W60;D68;A92;A96;W32;S30;D26;W61;S0;D10;S89;W31;D4;W37;S49;D79;S56;A87;S61;A61;D96;W86;S81;D50;S91;A68;A82;A36;A16;S6;W25;D76;D94;A20;A37;D91;S58;A54;S77;S27;A35;S6;A88;A14;S72;D12;A95;W93;W1;A73;A55;A13;S55;W43;W6;D37;W19;W79;W56;S26;A36;W85;A6;W94;A54;A12;S0;A13;D18;W14;A52;W44;D83;W17;W73;A72;D56;A63;S14;A64;A84;S54;D67;A92;D46;A51;D99;W42;W2;D22;S14;D96;A79;A41;S65;D8;S41;D30;S61;D77;A52;W2;S11;W26;D47;A65;S11;D2;W98;A30;D36;W26;S41;S71;D65;D76;D28;D25;S24;S24;S58;W13;D80;A58;S64;S52;W54;S51;S40;W20;D54;W13;A7;D37;D93;A74;D24;S0;A5;W52;D86;D22;W22;S13;D56;S99;D67;S34;S5;D47;D87;D41;S15;S66;W10;D55;A63;S57;W12;S96;W28;W96;S33;D70;D75;S20;W76;D83;A34;W29;S24;A7;W11;W81;S85;W1;W71;W73;D20;A62;S2;W43;S22;D18;W35;A15;S72;W12;S12;D93;S37;S55;D33;D52;S85;W97;A88;W47;A17;A50;A40;D9;A0;D13;A16;S87;S61;D12;D8;D69;S59;S71;A7;W99;D81;W6;D48;A92;D23;D47;W37;W30;A5;S96;D28;A13;D53;D17;D9;D58;S78;S26;W17;D88;A11;W87;W94;D45;D60;W52;S71;S71;D35;D60;W60;D73;A42;D57;A25;W87;A4;W74;W70;A50;S22;S63;W15;A62;S70;A15;W58;D19;D56;A80;S95;S57;D75;A16;S8;D88;S33;S94;A43;D97;S11;D53;W55;S52;W59;S92;D39;D40;W34;W33;D52;D19;S87;A21;D94;W5;W42;A50;D27;A29;D47;W12;D5;S70;D47;S16;W52;W30;D2;A48;S1;D68;W82;A47;S84;S56;S60;S14;W64;W8;A41;W8;S4;D80;A49;D72;
对应输出应该为:
689,-852

【笔试题】开发一个坐标计算工具相关推荐

  1. 2014年去哪儿网笔试题--给定一个整型数组,对这个整型素组排序,使得按序拼接数组各元素得到的值最小

    2014年去哪儿网笔试题--给定一个整型数组,对这个整型素组排序,使得按序拼接数组各元素得到的值最小. 我的大致思路是把这个整型数组转换成String数组,然后通过String类的compareTo方 ...

  2. 用Python写一个纪念日计算工具

    用python写一个纪念日计算工具 前言 主要内容 日期计算函数 GUI布局 用pyinstaller打包生成.exe文件 打包后的.exe文件预览 运行结果 最后提前祝马英俊生日快乐吧~ 前言 纪念 ...

  3. 用python写一个纪念日计算工具!有对象的特别注意了!

    前言 纪念日计算工具 是在了解GUI的规程中,突发奇想写的一个小东西,用到的是Python的 tkinter 控件.本人非开发人员,渣渣数据分析师,如遇大佬请轻喷,如有代码错误或不规范,感谢指正. 主 ...

  4. 再见所有的翻译工具!我使用了有道云+Python开发一个批量文档翻译工具!

    一.需求分析 需求: 最近有个任务,需要对一批文件进行汉译英的翻译 刚开始想着挺简单的呀,那就直接复制到翻译软件中,在复制出来呗. 有很多办法可以实现翻译: 可以使用谷歌翻译,这个完全免费的.但是不好 ...

  5. 使用python开发一个pdf合并工具

    老婆给女儿整理打印学习资料,希望能从很多个pdf中抽取一些页码来合并成一个文件, 就希望我能写一个程序来实现这个功能.刚好最近正在学习python,就用python开发了一个 pdf合并工具,也算是学 ...

  6. 爱奇艺笔试题之成长值计算

    题意如下: 成长值计算 时间限制:C/C++语言 1000MS:其他语言 3000MS 内存限制:C/C++语言 65536KB:其他语言 589824KB 题目描述: 爱奇艺累计有2000万会员,为 ...

  7. [Qt C++] 开发一个像素画工具

    代码:http://download.csdn.net/detail/zju_fish1996/9608840 像素画,是以像素为基本单位进行绘制的画.同时,它也是一种设计风格,常用于图标(ICon) ...

  8. cass或cad里提取点坐标及高程的插件_一个坐标计算小程序 EXCEL 可以进行抵偿任意带高斯坐标转换...

    永久下载:https://www.celiang.net/article/688 [1]史上最齐全的CAD下载资源!!! [2][BIM软件]Revit 2018软件安装包免费送,内附安装教程! [3 ...

  9. 优化自动化测试流程,使用 flask 开发一个 toy jenkins工具

    1.自动化 某一天你入职了一家高大上的科技公司,开心的做着软件测试的工作,每天点点点,下班就走,晚上陪女朋友玩王者,生活很惬意. 但是美好时光一般不长,这种生活很快被女主管打破.为了提升公司测试效率, ...

最新文章

  1. pycharm连接远程服务器
  2. 2018网站信息系统安全等级保护限期整改通知书的处理解决方案
  3. Scala入门到精通——第二十九节 Scala数据库编程
  4. 一个鉴黄师的产品之路(11-12更新)
  5. Leetcode题库217.存在重复元素(python实现)
  6. python 英语词频统计软件_为了边看美剧边学英语,我写了个字幕处理脚本
  7. eclipse 重构_Eclipse对类固醇的重构
  8. python打印星星居中_python实现while循环打印星星的四种形状
  9. 纽芬兰纪念大学计算机系怎么样,纽芬兰纪念大学计算机
  10. [中英对照]The sysfs Filesystem | sysfs文件系统
  11. 数据结构课程设计题目
  12. 关于小米手机修改开发者模式中最小宽度无限重启的问题
  13. 利用iTextsharp进行PDF页码旋转
  14. 计算机组老师颁奖词,教研组颁奖词5篇
  15. 七周七并发模型与七周七语言
  16. 安装pocoui报错
  17. bmp图片的格式详解
  18. 一步步追踪Dialog的创建流程(一)
  19. Java之 public class 和 class 的区别
  20. c# opencv车牌识别_opencv +数字识别

热门文章

  1. 白羊座二:星星的一周
  2. 网上搜罗的C语言入门必做的题
  3. 试读《揭秘家用路由器0day漏洞挖掘技术》
  4. 【快速幂】HRBUST 2263 萝莉控型提督
  5. 有限理性建模的方法和计算机平台,一类有限理性的建模和决策分析方法是的研究.docx...
  6. 计算机底层运转机制:多核、缓存、CPU、CU、ALU、Cache
  7. Steam串流投屏-Moonlight与SteamLink(2022/3/7更新)
  8. CSS3-渐变,过渡,3d动画
  9. Centos7安装Squid代理服务及配置透明代理
  10. 4002—Ajax随笔