题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
static int[] origin = {0,0};
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int temp = 0;
String str = in.nextLine() + "#";//标注字符串末尾。其实或许有别的办法?反正能用就行。
// System.out.println(str);
while(str.charAt(0) != '#'){
temp = str.indexOf(";");
String move = "";
if(temp == 0){//注意一下输入为空串,即两个;靠在一起的情况。
str = str.substring(1);
continue;
}
else move = str.substring(0,temp);
// str = str.substring(temp+1);//一会儿记得注释掉
// System.out.println(move);
// System.out.println(str);
if(moveIsValid(move)){
doMove(move);
str = str.substring(temp+1);
}
else{
str = str.substring(temp+1);
//continue;
}
}
// System.out.println(str);
System.out.println(origin[0]+","+origin[1]);
}
//到底要怎么判断这玩意儿啊?总之就先这样吧暴力拆解,后面再想办法优化一下。
public static boolean moveIsValid(String move){
if( move.length()>=2 && move.length()<=3){
if( move.charAt(0) == 'A' || move.charAt(0) == 'W' || move.charAt(0) == 'S' || move.charAt(0) == 'D'){
if(Integer.valueOf(move.charAt(1))>=48 && Integer.valueOf(move.charAt(1))<=58){
if( move.length() == 3){
if(Integer.valueOf(move.charAt(2))>=48 && Integer.valueOf(move.charAt(2))<=58){
return true;
}
else return false;
}
else return true;
}
else return false;
}
else return false;
}
else return false;
}
public static void doMove(String move){
if ( move.charAt(0) == 'A' ){
origin[0] -= Integer.parseInt(move.substring(1),10);
}
else if ( move.charAt(0) == 'S' ){
origin[1] -= Integer.parseInt(move.substring(1),10);
}
else if ( move.charAt(0) == 'D' ){
origin[0] += Integer.parseInt(move.substring(1),10);
}
else if ( move.charAt(0) == 'W' ){
origin[1] += Integer.parseInt(move.substring(1),10);
}
}
}

