import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
        int x = 0, y = 0;
        String[] parts = s.split(";", -1);
        for (String part : parts) {
            if (part.length() < 2 || part.length() > 3) {
                continue;
            }
            char dir = part.charAt(0);
            if (dir != 'A' && dir != 'D' && dir != 'W' && dir != 'S') {
                continue;
            }
            String numStr = part.substring(1);
            boolean validNum = true;
            for (int i = 0; i < numStr.length(); i++) {
                if (!Character.isDigit(numStr.charAt(i))) {
                    validNum = false;
                    break;
                }
            }
            if (!validNum) {
                continue;
            }
            int num = Integer.parseInt(numStr);
            if (num < 1 || num > 99) {
                continue;
            }
            switch (dir) {
                case 'A':
                    x -= num;
                    break;
                case 'D':
                    x += num;
                    break;
                case 'W':
                    y += num;
                    break;
                case 'S':
                    y -= num;
                    break;
            }
        }
        System.out.println(x + "," + y);
    }
}

https://www.nowcoder.com/discuss/727521113110073344

思路:

  1. 输入读取:使用Scanner.nextLine()读取整个输入字符串。
  2. 字符串分割:使用split(";", -1)将输入字符串按分号分割,保留所有部分,包括空字符串。
  3. 指令验证:检查指令长度是否为2或3。检查方向字符是否为有效字符(A、D、W、S)。检查剩余部分是否为有效数字(1-99之间,允许前导零)。
  4. 坐标更新:根据合法的指令方向及距离更新坐标。
  5. 结果输出:输出最终坐标。