题解 | #坐标移动#
坐标移动
https://www.nowcoder.com/practice/119bcca3befb405fbe58abe9c532eb29
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String line = "";
Pattern pa = Pattern.compile("^[ADWS]\\d{1,2}$");
int x = 0, y = 0;
while ((line = bf.readLine()) != null) {
String[] results = line.split(";");
for (String result : results) {
Matcher matcher = pa.matcher(result);
if (matcher.find()) {
char[] chs = result.toCharArray();
char c = chs[0];
int val = 0;
val = Integer.parseInt(result.substring(1));
switch (c) {
case 'A':
x -= val;
break;
case 'D':
x += val;
break;
case 'W':
y += val;
break;
case 'S':
y -= val;
break;
}
}
}
System.out.println(x + "," + y);
}
}
}
- 注意:字符类型char对象转化为int类型对象,会将字符对象的ASCII值转换成int类型的值。比如字符'1'转化成为int类型的值,
int i = '1';//i的值为50,而不是1
- 注意正则表达式,如果想明确Pattern.compile的模式是适用于整个字符串(而不是其中包含的某个子字符串适用即可),前后加上^和$表示字符串开始和结束。
- 正则表达式中,转义符是反斜杠“\”(反斜杠可以这么记,它与x正方向的夹角大于90度,斜率为负数,所以称之为反斜杠)。
- 获取字符串中的子字符串第一时间想到API为string.substring()。(两个参数是左含右不含,1个参数是此下标到末尾(包含末尾字符))
- ASWD具体对应的规则要看清题意,不可以自己凭看题目时的记忆,具体代码时随便写。
携程成长空间 146人发布