码迷,mamicode.com
首页 > 编程语言 > 详细

Java正则表达式

时间:2016-09-23 13:16:36      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:

用来记录实际编程中遇到的情况,持续更新。

 

如:

开发一个坐标计算工具, 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();
    }

}

 

Java正则表达式

标签:

原文地址:http://www.cnblogs.com/ht-beyond/p/5899336.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!