题解 | #坐标移动#

坐标移动

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

import java.util.Scanner;
//本题我的解题思路是,根据题意知,有两种是有效输入,以x代表字母AWSD,y代表数字,
//开头的“xyy;”与“xy;”是一种,还有一种在中间和结尾的形式如“;xyy;”和“;xy;”是另一种有效输入
//对这两种形式进行特别处理,其他的直接省略即可
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        //代表X和Y坐标
        int[] XY ={0,0};
        //go代表坐标改变的数额
        int go = 0;
        int i = 0;
	    //先对开头的符合条件的进行处理,不符合就跳过
        if(fun1(str.charAt(i))){
            if(fun2(str.charAt(i+1))){
                if(fun2(str.charAt(i+2))){
                   if(str.charAt(i+3)==';'){
                       go = (str.charAt(i+1)-48)*10 + (str.charAt(i+2)-48);
                       XY = funmove(str.charAt(i),go,XY);
                   }
                }
                else if(str.charAt(i+2)==';') {
                    go = str.charAt(i + 1) - 48;
                    XY = funmove(str.charAt(i), go, XY);
                }
            }
        }
	    //对不是开头的符合条件的进行处理,不符合条件的跳过
        for (i = 1; i <= str.length() - 3; i++) {
            if(fun1(str.charAt(i))){
                if(fun2(str.charAt(i+1))){
                    if(fun2(str.charAt(i+2))&& i+3 < str.length()){
                        if(str.charAt(i+3)==';'&&str.charAt(i-1)==';'){
                            go = (str.charAt(i+1)-48)*10 + (str.charAt(i+2)-48);
                            XY = funmove(str.charAt(i),go,XY);
                        }
                    }
                    else if(str.charAt(i+2)==';'&&str.charAt(i-1)==';') {
                        go = str.charAt(i + 1) - 48;
                        XY = funmove(str.charAt(i), go, XY);
                    }
                }
            }
            }
        System.out.print(XY[0]);
        System.out.print(",");
        System.out.print(XY[1]);
        }
    //判断是否为AWSD中的一个
    public static boolean fun1(char ch) {
        if (ch == 'A' || ch == 'W' || ch == 'S' || ch == 'D')return true;
        else return false;
    }
    //判断是否为数字
    public static boolean fun2(char ch1) {
        if (ch1 >= 48 && ch1 <= 57 )return true;
        else return false;
    }
    //对符合条件的进行特殊处理,并把得到的改变值返回
    public static int[] funmove(char ch1,int go,int[] a){
        switch (ch1) {
            case 'A': {
                a[0] -= go;
                break;
            }
            case 'W': {
                a[1] += go;
                break;
            }
            case 'D': {
                a[0] += go;
                break;
            }
            case 'S': {
                a[1] -= go;
                break;
            }
        }
        return a;
    }

}

全部评论

相关推荐

SinyWu:七院电话面的时候问我有没有女朋友,一听异地说你赶紧分。我:???
点赞 评论 收藏
分享
和蔼:在竞争中脱颖而出,厉害! 但是有一个小问题:谁问你了?😡我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务