题解 | #坐标移动#
坐标移动
http://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String originStr = scan.nextLine();
String[] strs = originStr.split(";");
int[] currentLocation = new int[2]; // 定义一个一维数组,用于存放当前所在的位置
Arrays.fill(currentLocation, Integer.valueOf(0)); // 初始化,初始时所在的位置的坐标为 (0, 0)
for (String str : strs) { // 获取每一步的移动
// 如果当前坐标的长度小于 2 或者大于 3,那么我们认为这是无效的,直接跳过当次循环
if (str.length() < 2 || str.length() > 3) {
continue;
}
char direction = str.charAt(0); // 获取移动的方向
// 如果移动的方向不是上下左右四个方向的任意一个,那么我们认为当次移动无效,跳过当次循环
if (!(direction == 'A' || direction == 'D' || direction == 'W' || direction == 'S')) {
continue;
}
String stepsStr = str.substring(1); // 获取在当前方向上移动的步数
int sign = 0; // 定义一个整型变量, 用于存放当前移动的步数是否合法
int steps = 0;
try {
steps = Integer.valueOf(stepsStr); // 尝试将 String 类型转换为 int 类型
} catch (Exception e) { // 如果抛出异常,证明步数不合法
sign = 1;
} finally {
steps = steps;
}
if (sign == 1) { // 如果当前移动的步数不合法,直接跳过当次循环
continue;
}
switch (direction) {
case 'A':
currentLocation[0] -= steps;
break;
case 'D':
currentLocation[0] += steps;
break;
case 'W':
currentLocation[1] += steps;
break;
default:
currentLocation[1] -= steps;
}
}
System.out.println(currentLocation[0] + "," + currentLocation[1]);
}
}