坐标移动
2016-03-31 11:40
162 查看
题目描述
开发一个坐标计算工具, 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)
[b]输入描述:[/b]
一行字符串
[b]输出描述:[/b]
最终坐标,以,分隔
[b]输入例子:[/b]
A10;S20;W10;D30;X;A1A;B10A11;;A10;
[b]输出例子:[/b]
10,-10
import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Temp7 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNextLine()) { String s = sc.nextLine(); String[] str = s.split(";"); int sum1 = 0; int sum2 = 0; Pattern p = Pattern.compile("^[ADWS][1-9][0-9]?"); for (int i = 0; i < str.length; i++) { Matcher m = p.matcher(str[i]); if (m.matches()) { char c = str[i].charAt(0); switch (c) { case 'A': sum1 -= Integer.valueOf(str[i].substring(1)); break; case 'S': sum2 -= Integer.valueOf(str[i].substring(1)); break; case 'W': sum2 += Integer.valueOf(str[i].substring(1)); break; case 'D': sum1 += Integer.valueOf(str[i].substring(1)); break; } } else if (str[i].length() == 0) { //System.out.println("空不影响结果"); continue; } else { // System.out.println("无效字符"); continue; } } System.out.println(sum1 + "," + sum2); } } }
相关文章推荐
- 【AngularJs】--入门实例
- 部署CRM系统
- Oracle View
- Git常用命令
- 使用Android手机共享手机网络给PC上网
- JAVA GC算法
- java 网络编程 URL类 笔记
- iOS - 静态库的创建与使用
- maximum-depth-of-binary-tree
- 小觅机器人sDeno亮相Nvidia发布会 发力人工智能
- GCD 定时器
- poj 2826 计算几何
- jquery 常用语法
- JavaSe基础(15)-- abstact
- java 网络编程
- Python正则表达式指南
- iis 部署 未在本地计算机上注册“Microsoft.Jet.OleDb.4.0”提供程序
- 用R语言对一个信用卡数据实现logit,GBM,knn,xgboost
- odoo列表视图下栏位宽度显示问题
- 宏定义