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

来源:互联网 发布:厦门云智盛世 数据库 编辑:程序博客网 时间:2024/06/07 18:02

参考【http://blog.csdn.net/DERRANTCM/article/details/51328464】

使用正则表达式:


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);//获取首字母Aint num=Integer.parseInt(input[i].substring(1));//获取首字母后数字10switch(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 0
原创粉丝点击