思路
坐标系其实就是一个(x,y)的二元组。如果用python来解,这道题直接用元组就可以了。但是Java没有元组的概念,因此我们就需要构建一个元组。
接下来就是将输入按照;分隔符split成一个数组然后遍历操作就可以了。
代码
import java.util.ArrayList; import java.util.Map; import java.util.Scanner; import java.util.StringJoiner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while (scanner.hasNext()) { String operations = scanner.next(); String[] operationArr = operations.split(";"); Tuple<Integer, Integer> tuple = Tuple.of(0, 0); for (String operation : operationArr) { // 长度为2或者3 if (operation.length() == 2 || operation.length() == 3 && operation.charAt(0) >= 65 && operation.charAt(0) <= 90) { if (isDigital(operation.substring(1))) { // 开始运动 move(operation, tuple); } } } System.out.println(tuple); } } private static boolean isDigital(String num) { char[] chars = num.toCharArray(); for (char aChar : chars) { if (!Character.isDigit(aChar)) { return false; } } return true; } private static Tuple<Integer, Integer> move(String operation, Tuple<Integer, Integer> tuple) { String direction = operation.substring(0, 1); int step = Integer.parseInt(operation.substring(1)); switch (direction) { case "A": tuple.l -= step; break; case "S": tuple.r -= step; break; case "D": tuple.l += step; break; case "W": tuple.r += step; break; default: } return tuple; } } class Tuple<L, R> { L l; R r; private Tuple(L l, R r) { this.l = l; this.r = r; } static <L, R> Tuple<L, R> of(L l, R r) { return new Tuple<>(l, r); } @Override public String toString() { return l + "," + r; } }