标签:
用来记录实际编程中遇到的情况,持续更新。
如:
开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。输入:合法坐标为A(或者D或者W或者S) + 数字(两位以内),坐标之间以;分隔。非法坐标点需要进行丢弃。如AA10; A1A; $%$; YAD; 等。
import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); while(scanner.hasNext()) { String input = scanner.next(); String[] arr = input.split(";"); String pattern = "[ADWS][0-9]{1,2}"; Pattern r = Pattern.compile(pattern); List<String> list = new ArrayList<String>(); for(int i=0;i<arr.length;i++) { Matcher m = r.matcher(arr[i]); // find()方法是部分匹配 // matches()是全部匹配 if(m.matches()) { list.add(m.group()); } } int x=0, y=0; for(int i=0;i<list.size();i++) { char direction = list.get(i).charAt(0); int len = Integer.valueOf(list.get(i).substring(1)); //System.out.println(len); switch (direction) { case ‘A‘: x -= len; break; case ‘D‘: x += len; break; case ‘W‘: y += len; break; case ‘S‘: y -= len; break; default: break; } } System.out.println(x+","+y); } scanner.close(); } }
标签:
原文地址:http://www.cnblogs.com/ht-beyond/p/5899336.html