package com;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/**
* 功能描述:开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动
*
*
* @Author:dx
* @Date: 2022/9/14 11:06
*/
public class CoordinateMobile {
/*
1.输入一串字符串,以 ;分隔,分割成字符串数组
2.遍历字符串数组
3.判断当前下标位置的字符串是否合法:
4.合法,则判断字母是ADWS中那一个,截取后面数据,进行坐标+-
5.不合法,则跳过此字符串,迭代下一个字符串
6.输出遍历后的结果坐标,以 ‘,’分隔两个数字输出
*/
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line1 = br.readLine();
String[] str = line1.split(";");
//正则表达式
String regax = "^[ADWS][1-9]*[0-9]$";
//坐标初始位置
String begin = "0,0";
//移动后的坐标
String result="";
for (int i = 0; i < str.length; i++) {
if(str[i].matches(regax) && str[i].length()<4){
//合法
result=judgeWord(str[i],begin);
begin=result;
} else {
continue;
}
}
System.out.println(result);
}
/**
*实现功能描述:判断第一个字符是ADWS中哪一个,并执行坐标移动
*
*@param coordinate//输入的坐标
* begin//移动前的坐标
*@return
*/
public static String judgeWord(String coordinate,String begin){
String[] strArray=begin.split(",");
// 横坐标 abscissa
int abscissa=Integer.parseInt(strArray[0]);
//纵坐标 ordinate
int ordinate=Integer.parseInt(strArray[1]);
//移动的方向
char word=coordinate.charAt(0);
//要移动的数字
int moveNumber = Integer.parseInt(coordinate.substring(1));
switch (word){
case 'A':
abscissa-=moveNumber;
break;
case 'D':
abscissa +=moveNumber;
break;
case 'W':
ordinate+=moveNumber;
break;
case 'S':
ordinate-=moveNumber;
break;
}
return abscissa+","+ordinate;
}
}
牛客:坐标移动(练习记录)
最新推荐文章于 2024-05-31 10:46:10 发布