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);
}
} 

阿里云成长空间 745人发布