题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
总体思路:把接收的字符串使用split处理成为;分割的多个子串,循环遍历所有子串,子串不合法的直接跳过,子串合法的对横纵坐标进行相应的操作。(处理子串分为处理首字母和首字母后的数字,用多个if判断子串的合法性) import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); String str = in.nextLine(); int strnum, x = 0, y = 0; String str1[] = str.split(";"); for (int i = 0; i < str1.length; i++) { //依据分割出的子串次数循环 if (str1[i] != "" && str1[i].length() > 1 &&str1[i].substring(1) != "") {//首先判断不是空串,并且串的长度大于1(不判断这一步会导致str1[i].substring(1) != ""抛异常,当处理字符串长度为1的串时),最后判断首字母后的串不为空 if (str1[i].charAt(0) == 'A' || str1[i].charAt(0) == 'W' || str1[i].charAt(0) == 'S' || str1[i].charAt(0) == 'D') { try { strnum = Integer.parseInt(str1[i].substring(1));//没抓到异常代表首字母后的数字合法不带有字母。 if (str1[i].charAt(0) == 'A') { x = x - strnum; } if (str1[i].charAt(0) == 'W') { y = y + strnum; } if (str1[i].charAt(0) == 'S') { y = y - strnum; } if (str1[i].charAt(0) == 'D') { x = x + strnum; } } catch (NumberFormatException e) { //如果抓异常证明后面的不是合法的纯数字 } } } } System.out.println(x + "," + y); } } //有不合理出敬请指出。#刷题##java##华为OD#