HJ17 坐标移动
HJ17 坐标移动
题目大意如下,
A左移,D右移,W上移,S下移。从(0,0)点开始移动,从输入字符串里面读取坐标,并输出结果
合法坐标为A(或者D或者W或者S) + 数字(两位以内)。坐标之间以;分隔。
处理过程:
起点(0,0)
+ A10 = (-10,0)
+ S20 = (-10,-20)
+ W10 = (-10,-10)
+ D30 = (20,-10)
+ x = 无效
+ A1A = 无效
+ B10A11 = 无效
+ 一个空 不影响
+ A10 = (10,-10)
结果 (10, -10)
得出A左移 S下移会使原x-相应值;W 上移D右移会使原x+相应值
可以将字符串安装;分割存储到字符串数组
所以需要匹配到合法与不合法的的输入
这里采用正则表达式
[WASD][0-9]{1,2} 含义为当前字符串是WASD中的一个 后面跟1位或两位数字
不合法就跳过,不影响x,y的值
代码如下
import java.util.*; import java.io.*; public class Main { public static void main(String[] args)throws IOException{ BufferedReader bf=new BufferedReader(new InputStreamReader(System.in)); String[] in=bf.readLine().split(";"); int x=0; int y=0; for(String s:in){ if(!s.matches("[WASD][0-9]{1,2}")){ continue;} int val=Integer.valueOf(s.substring(1)); switch(s.charAt(0)){ case 'W': y+=val; break; case 'S': y-=val; break; case 'A': x-=val; break; case 'D': x+=val; break; } } System.out.println(x+","+y); } }