题解 | 坐标移动
解题思路:
- 整个思路比较简单,就是增加判断而已
- 按照规则,进行移动即可
import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String baseCmd = "A/D/W/S"; String[] cmdArr = in.next().split(";"); int x = 0, y = 0; for (int i = 0; i < cmdArr.length; i++) { String cmd = cmdArr[i]; // 长度大小3,不是合法指令 if (cmd.length() <= 0 || cmd.length() > 3) { continue; } String mvCmd = cmd.substring(0, 1); // 如果移动指令中不包括相关指令,则继续下一个 if (!baseCmd.contains(mvCmd)) { continue; } // 判断移动命令是否数字 String numStr = cmd.substring(1); if (!isNumber(numStr)) { continue; } //获取移动的步数 int step = Integer.parseInt(numStr); // 按命令执行移动 if (mvCmd.equals("A")) { x -= step; } if (mvCmd.equals("D")) { x += step; } if (mvCmd.equals("W")) { y += step; } if (mvCmd.equals("S")) { y -= step; } } System.out.println("" + x + "," + y); } // 判断字符串是否时数字 public static boolean isNumber(String s) { for (char c : s.toCharArray()) { if (!Character.isDigit(c)) { return false; } } return true; } }