0
点赞
收藏
分享

微信扫一扫

【华为OJ17】坐标移动----方法二(推荐)



使用正则表达式:


import java.util.Scanner;

/**
*【题17】 坐标移动: 方向: A<☜ D>☞ W^☝ S!☟
* 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)
* @author WGS
*/
public class Main {

public static String calculateLocations(String str){
StringBuilder sb=new StringBuilder(128);
if(str ==null ||str.length() <=0)
return " ";
//坐标
int X=0;
int Y=0;

String[] input=str.split(";");
for(int i=0;i<input.length;i++){
//input[i]:A10,D22...
//正则表达式判断
if(input[i].matches("(A|D|W|S)[0-9]{1,2}")){
char firstChar=input[i].charAt(0);//获取首字母A
int num=Integer.parseInt(input[i].substring(1));//获取首字母后数字10
switch(firstChar){
case 'A':
X -= num;
break;
case 'D':
X += num;
break;
case 'W':
Y += num;
break;
case 'S':
Y -= num;
break;

}
}
}
sb.append(X).append(",").append(Y);
return sb.toString();

}

public static void main(String[] args) {

Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String str=sc.nextLine();
System.out.println(calculateLocations(str));
}
sc.close();

}
}




举报

相关推荐

0 条评论