zoukankan      html  css  js  c++  java
  • 25:坐标移动CoordinateMove

    题目描述

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

    输入描述:一行字符串

    输出描述:最终坐标,以,分隔

    输入例子:

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

    输出例子:

    10,-10

    package prctice01;
    
    import java.util.Scanner;
    
    /*题目描述
    开发一个坐标计算工具, 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)
    输入描述:一行字符串
    输出描述:最终坐标,以,分隔
    输入例子:
    A10;S20;W10;D30;X;A1A;B10A11;;A10;
    输出例子:
    10,-10
    */
    public class CoordinateMove25 {
    
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            while(in.hasNext())
            {
                String[] input = in.nextLine().split(";");
                int x = 0;
                int y = 0;
                
                //for (String step : input) {
                
                for(int i =0;i<input.length;i++){
                    if(input[i].length()<2 || input[i].length()>3)
                        continue;
                    if(!(input[i].charAt(1) <='9') || !(input[i].charAt(1)>='0'))
                        continue;
                    if(input[i].length()==3 ){
                        if( !(input[i].charAt(2) <='9') || !(input[i].charAt(2)>='0'))
                            continue;
                    }
                        
                    int num = Integer.parseInt(input[i].substring(1,input[i].length()));
                switch (input[i].substring(0,1)) {
                
                    /*if(step.length()<2 || step.length()>3)break;
                    try{
                    int num = Integer.parseInt(step.substring(1));
                    //int num = Integer.parseInt(step.substring(1),step.length());
                    switch (step.substring(0, 1)) {*/
                    case "A":
                        x-=num;
                        break;
                    case "D":
                        x+=num;
                        break;
                    case "W":
                        y+=num;
                        break;
                    case "S":
                        y-=num;
                        break;
                    default:
                        break;
                    }
                    }
                System.out.println(x+","+y);
            }
            
        }
    
    }
    
    /*
    public class CoordinateMove25{
        public static void main(String[]args){
            Scanner scan=new Scanner(System.in);
            while(scan.hasNextLine()){
                int x=0;
                int y=0;
                String[]tokens=scan.nextLine().split(";");
                for(int i=0;i<tokens.length;i++){
                    try{
                        int b=Integer.parseInt(tokens[i].substring(1,tokens[i].length()));
                        if(tokens[i].charAt(0)=='A'){
                            x-=b;
                        }
                         if(tokens[i].charAt(0)=='W'){
                            y+=b;
                        }
                         if(tokens[i].charAt(0)=='S'){
                            y-=b;
                        }
                         if(tokens[i].charAt(0)=='D'){
                            x+=b;
                        }
                         
                         
                    }catch(Exception e){
                        continue;
                    }
                }
                System.out.println(x+","+y);
                 
            }
        }
    }
    */
  • 相关阅读:
    绘画字符串
    方法名,类名与字符串之间的转换
    重写视图的点击区域
    ios7新特性
    常用的sq语句
    基于xmpp的ios聊天客户端(一)
    iOS真机测试,为Provisioning添加设备
    【IOS 开发】Object-C 运算符
    【Android 应用开发】 自定义组件 宽高适配方法, 手势监听器操作组件, 回调接口维护策略, 绘制方法分析 -- 基于 WheelView 组件分析自定义组件
    博客技术资料整理
  • 原文地址:https://www.cnblogs.com/newcoder/p/5770776.html
Copyright © 2011-2022 走看看