题目描述
开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。
思路:利用正则表达式排除无效输入,利用switch case对应字符。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
String[] str=sc.nextLine().split(";");
int x=0,y=0;
for(int i=0;i<str.length;i++){
if(str[i].matches("[ASDW]\\d{1,2}")){
char c=str[i].charAt(0);
int num=Integer.parseInt(str[i].substring(1));
switch(c){
case 'A':x-=num;break;
case 'D':x+=num;break;
case 'S':y-=num;break;
case 'W':y+=num;break;
}
}
}
System.out.println(x+","+y);
}
}
}
排坑:正则表达式没用过,主要是用来描述或者匹配一系列符合某个语句规则的字符串
知识点:将自己实现的判断字符串合法性的函数换成一个很简单的正则表达式,list[i].matches("[ASDW]\\d+"),其中[ASDW]表示A或S或D或W,\\d表示数字0-9,+表示前一个类型的字符存在一次或多次,X{n,m}表示X至少n此最多m次。方法matches()用于检测字符串是否匹配给定的正则表达式。