Passion and Patience

Work Hard, Play Hard

导航

HJ 坐标移动

正则式.matches应用

我的解题思路:判断不符合标准的输入,以及switch函数进行情况选择
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        String str1 = in.next();
        int[] loc = new int[2];
        String[] str = str1.split(";");
    
        for (int i = 0; i < str.length; i++) {
            loc = opr(str[i],loc);
        }
        System.out.println(loc[0]+","+loc[1]);
    }

    
    static int[] opr(String str,int[] loc) {
        if(str.length()<2){
            return loc;
        }
        char q = str.charAt(0);
        String strNew= str.substring(1);
        // regularization
        boolean flag = strNew.matches("[0-9]{1,2}");
        if(strNew.length()<=2&&flag){
            int add = Integer.parseInt(strNew);
            switch(q) {
            case 'A':
                loc[0] = loc[0] - add;
                break;
            case 'D':
                loc[0] = loc[0] + add;
                break;
            case 'S':
                loc[1] = loc[1] - add;
                break;
            case 'W':
                loc[1] = loc[1] + add;
                break;
            default:
                return loc;
            }
        }
        return loc;
    }

    
}
官方解题思路:!s.matches("[WASD][0-9]{1,2}")减少情况分类

posted on 2024-04-24 15:04  安静的聆  阅读(2)  评论(0编辑  收藏  举报