题解 | 坐标移动
解题思路:
- 整个思路比较简单,就是增加判断而已
- 按照规则,进行移动即可
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;
}
}