题解 | #坐标移动#
坐标移动
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); } } }