坐标移动

开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。

输入:

合法坐标为A(或者D或者W或者S) + 数字(两位以内)

坐标之间以;分隔。

非法坐标点需要进行丢弃。如AA10; A1A; $%$; YAD; 等。

下面是一个简单的例子 如:

A10;S20;W10;D30;X;A1A;B10A11;;A10;

处理过程:

起点(0,0)

+ A10 = (-10,0)

+ S20 = (-10,-20)

+ W10 = (-10,-10)

+ D30 = (20,-10)

+ x = 无效

+ A1A = 无效

+ B10A11 = 无效

+ 一个空 不影响

+ A10 = (10,-10)

结果 (10, -10)

数据范围:每组输入的字符串长度满足

1

10000

1≤n≤10000 ,坐标保证满足

2

31

,

2

31

1

−2

31

≤x,y≤2

31

−1 ,且数字部分仅含正数

输入描述:

一行字符串

输出描述:

最终坐标,以逗号分隔

示例1

输入:

A10;S20;W10;D30;X;A1A;B10A11;;A10;

复制

输出:

10,-10

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息

public class Main {

public static void main(String[] args) {

Scanner in = new Scanner(System.in);

while (in.hasNextLine()) {

int x = 0;

int y = 0;

String input = in.nextLine();

String[] strs = input.split(";");

for (String str : strs) {

int v = 0;

if ("".equals(str) || str.length() > 3) continue;

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

int t = str.charAt(i) - '0';

if (t >= 0 && t <= 9) {

if (i == 1 && str.length() != 2) v += t * 10;

else v += t;

} else {

v = 0;

break;

}

}

char c = str.charAt(0);

switch (c) {

case 'A':

x -= v;

break;

case 'D':

x += v;

break;

case 'W':

y += v;

break;

case 'S':

y -= v;

break;

default:

break;

}

}

System.out.println(x + "," + y);

}

}

}

全部评论

相关推荐

不愿透露姓名的神秘牛友
06-13 19:30
化身华黑&nbsp;今天询问对接人审批情况,结果被告知没HC了&nbsp;云计算&nbsp;
苦闷的柠檬精allin实习:主管面结束后hr每周保温一次,结果前几天和我说没hc了,我也化身华黑子了
投递华为等公司9个岗位 > 华为求职进展汇总
点赞 评论 收藏
分享
能干的三文鱼刷了100道题:公司可能有弄嵌入式需要会画pcb的需求,而且pcb能快速直观看出一个人某方面的实力。看看是否有面试资格。问你问题也能ai出来,pcb这东西能作假概率不高
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务