题解 | #坐标移动#

坐标移动

https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            String a = in.nextLine();
            String[] b = a.split(";");
            int x = 0;
            int y = 0;
            for (int i = 0; i < b.length; i++) {
                String su = b[i];
                if (su.matches("[WASD][0-9]{1,2}")) {  //重点在于此处,题目说两位数以内,个人误以为是一定要两个数位,比如如果是1,那坐标应该输入成01,结果就在正则里少了一种可行坐标校验,导致上传后怎么试都提示错误,后面才发现确实是理解错了,在正则表达式内加上正确情况的补充条件就通过了~
                    switch (su.charAt(0)) {
                        case 'A' :
                            int t1 = Integer.valueOf(su.substring(1));
                            x -= t1;
                            break;
                        case 'D' :
                            t1 = Integer.valueOf(su.substring(1));
                            x += t1;
                            break;
                        case 'W' :
                            t1 = Integer.valueOf(su.substring(1));
                            y += t1;
                            break;
                        case 'S' :
                            t1 = Integer.valueOf(su.substring(1));
                            y -= t1;
                            break;
                    }
                }
            }
            System.out.println(x + "," + y);
        }
    }
}

全部评论

相关推荐

有趣的牛油果开挂了:最近这个阶段收到些杂七杂八的短信是真的烦
点赞 评论 收藏
分享
蚂蚁 基架java (n+6)*16 签字费若干
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务