题解 HJ17| #坐标移动#

坐标移动

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

import java.util.Scanner;


public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int x=0;
        int y=0;
        String awsd;
        awsd=in.next();
        String [] str = awsd.split (";");//以分号为分割点
        for(int i=0;i<str.length;i++){
            if(str[i].length()==3){
                if(awsd.charAt(1)<='9'&&str[i].charAt(1)>='0'&&str[i].charAt(2)<='9'&&str[i].charAt(2)>='0'){
                    if(str[i].charAt(0)=='A')x=x-(str[i].charAt(1)-'0')*10-(str[i].charAt(2)-'0');
                    if(str[i].charAt(0)=='W')y=y+(str[i].charAt(1)-'0')*10+(str[i].charAt(2)-'0');
                    if(str[i].charAt(0)=='S')y=y-(str[i].charAt(1)-'0')*10-(str[i].charAt(2)-'0');
                    if(str[i].charAt(0)=='D')x=x+(str[i].charAt(1)-'0')*10+(str[i].charAt(2)-'0');
                }
            }else if(str[i].length()==2){
                if(str[i].charAt(1)<='9'&&str[i].charAt(1)>='0'){
                    if(str[i].charAt(0)=='A')x=x-(str[i].charAt(1)-'0');
                    if(str[i].charAt(0)=='W')y=y+(str[i].charAt(1)-'0');
                    if(str[i].charAt(0)=='S')y=y-(str[i].charAt(1)-'0');
                    if(str[i].charAt(0)=='D')x=x+(str[i].charAt(1)-'0'); 
                }
            }
        }        
        System.out.print(x);
        System.out.print(',');
        System.out.print(y);
    }
}

先定义一个字符串接收输入,之后用字符串数组,用string自带的split分割,以:分割到数组中

定义一个x一个y作为坐标

int x=0;

int y=0;

String awsd;

awsd=in.next();

String [] str = awsd.split (";");//以分号为分割点

要求是只要第一个字母为aswd,后面一个或俩个为数字,那么只需要判定长度为3/2?然后判定charAt(1)charAt(2)是否为数字

for(int i=0;i<str.length;i++){

if(str[i].length()==3){

if(awsd.charAt(1)<='9'&&str[i].charAt(1)>='0'&&str[i].charAt(2)<='9'&&str[i].charAt(2)>='0'){

最后判定第一个charAt(0)是哪个字母即可,其他无效数据都过不了if判定

if(str[i].charAt(0)=='A')x=x-(str[i].charAt(1)-'0')*10-(str[i].charAt(2)-'0');

if(str[i].charAt(0)=='W')y=y+(str[i].charAt(1)-'0')*10+(str[i].charAt(2)-'0');

if(str[i].charAt(0)=='S')y=y-(str[i].charAt(1)-'0')*10-(str[i].charAt(2)-'0');

if(str[i].charAt(0)=='D')x=x+(str[i].charAt(1)-'0')*10+(str[i].charAt(2)-'0');

}

}else if(str[i].length()==2){

if(str[i].charAt(1)<='9'&&str[i].charAt(1)>='0'){

if(str[i].charAt(0)=='A')x=x-(str[i].charAt(1)-'0');

if(str[i].charAt(0)=='W')y=y+(str[i].charAt(1)-'0');

if(str[i].charAt(0)=='S')y=y-(str[i].charAt(1)-'0');

if(str[i].charAt(0)=='D')x=x+(str[i].charAt(1)-'0');

}

}

}

最后用scanner的输出输出出来x,y

System.out.print(x);

System.out.print(',');

System.out.print(y);

}

}

#华为od题库#
华为OD笔试库讲解,JAVA版 文章被收录于专栏

随便发发而已

全部评论

相关推荐

HNU_fsq:建议直接出国,这简历太6了。自愧不如
点赞 评论 收藏
分享
09-27 14:42
已编辑
浙江大学 Java
未来未临:把浙大放大加粗就行
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务