题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
import java.util.Scanner; import java.util.ArrayList; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNext()) { //1.读入字符串 String s=in.nextLine(); //2.切割字符串 String[] s1=s.split(";"); //3.判断坐标的合法性 把合法的坐标存储进list ArrayList<String> s2=new ArrayList<>(); //4.遍历字符数组 for(int i=0;i<s1.length;i++){ //4.1 长度大于3的不合法 if(s1[i].length()<=3&&s1[i].length()>1){ //4.2 第一个字符不是这四个字母的不合法 if(s1[i].charAt(0)=='A'|| s1[i].charAt(0)=='D'|| s1[i].charAt(0)=='W'|| s1[i].charAt(0)=='S'){ //4.3 第二个字符和第三个字符不是数字的不合法 if(s1[i].charAt(1)>='0'&&s1[i].charAt(1)<='9'){ //4.3 如果字符长度等于3 if(s1[i].length()==3){ if(s1[i].charAt(2)>='0'&&s1[i].charAt(2)<='9'){ //4.4 直接加入集合 s2.add(s1[i]); } }else{ s2.add(s1[i]); } } } } } // 5.集合加入完成以后 开始移动坐标 //5.1创建坐标 x 表示横坐标 y 表示纵坐标 int x=0,y=0; for(int i=0;i<s2.size();i++){ String t=s2.get(i); //5.2 截断字符串 String t1=t.substring(1); //5.3 转换字符串为数值 int q=Integer.parseInt(t1); switch(t.charAt(0)){ case 'A': //左移 x-=q; break; case 'D': //右移 x+=q; break; case 'W': //上移 y+=q; break; case 'S': //下移 y-=q; break; } } System.out.println(x+","+y); } } }