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