题目描述

开发一个坐标计算工具, 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 = ;
int y = ; //for (String step : input) { for(int i =;i<input.length;i++){
if(input[i].length()< || input[i].length()>)
continue;
if(!(input[i].charAt() <='') || !(input[i].charAt()>=''))
continue;
if(input[i].length()== ){
if( !(input[i].charAt() <='') || !(input[i].charAt()>=''))
continue;
} int num = Integer.parseInt(input[i].substring(,input[i].length()));
switch (input[i].substring(,)) { /*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); }
}
}
*/

25:坐标移动CoordinateMove的更多相关文章

  1. C#基础教程/适合初学者

    C#基础教程 第一章       C#语言基础 本章介绍C#语言的基础知识,希望具有C语言的读者能够基本掌握C#语言,并以此为基础,能够进一步学习用C#语言编写window应用程序和Web应用程序.当 ...

  2. 微信JS-SDK坐标位置转换为百度地图坐标

    微信JS-SDK开发过程中,使用getLocation获取坐标位置,如何将微信获取的坐标直接应用到百度地图中,显示以下效果: 说明:红色图标是从微信转换过来的位置,蓝色图标是周边位置.首先从微信开发流 ...

  3. OpenGL 坐标与矩阵转换

    1. OpenGL 渲染管线 OpenGL渲染管线分为两大部分,模型观测变换(ModelView Transformation)和投影变换(Projection Transformation).做个比 ...

  4. 25.按要求编写一个Java应用程序: (1)编写一个矩形类Rect,包含: 两个属性:矩形的宽width;矩形的高height。 两个构造方法: 1.一个带有两个参数的构造方法,用于将width和height属性初化; 2.一个不带参数的构造方法,将矩形初始化为宽和高都为10。 两个方法: 求矩形面积的方法area() 求矩形周长的方法perimeter() (2)通过继承Rect类编写一个具有

    package zhongqiuzuoye; //自己写的方法 public class Rect { public double width; public double height; Rect( ...

  5. highcharts图表中级入门之xAxis label:X(横)坐标刻度值过长截断多行(换行)显示问题说明

    在使用highcharts图表的过程中,总会碰到这样一个很是棘手的问题,横坐标刻度值太长,在不换行显示的情况下显得格外拥挤.虽然针对这一问题是可以对其刻度值进行旋转以此来避开显示拥挤问题[如何让hig ...

  6. [原]quick2.25精灵变灰

    由于quick2.25没有导出shader相应的接口,所以2.25无法直接使用shader. 本文简单介绍如何导出相应接口,同时教大家使用shader 实现精灵变灰 一.编写静态函数,以供导出使用(直 ...

  7. WGS84、Web墨卡托、火星坐标、百度坐标互转

    转自:1.http://blog.csdn.net/wildboy2001/article/details/12031351 2.http://kongxz.com/2013/10/wgs-cgj/ ...

  8. cocos基础教程(6)坐标与锚点讲解

    坐标系详解 Cocos2d-x坐标系和OpenGL坐标系相同,都是起源于笛卡尔坐标系.原点为屏幕左下角,x向右,y向上. 世界坐标系(World Coordinate) VS 本地坐标系(Node L ...

  9. Android 坐标与宽高研究getLeft() getTop() getRight()和getBottom()

    把view看做一个矩形,分别表示的是一个view的左边,上边,右边,下边距离他的父组件的距离. getRight() =getLeft() + getWidth() getBottom()= getT ...

随机推荐

  1. iterator & iterable

    一. java.lang.Iterable java.util.Iterator Iterator是迭代器类,而Iterable是接口. 好多类都实现了Iterable接口,这样对象就可以调用iter ...

  2. 品酒大会(uoj 131)

    一年一度的“幻影阁夏日品酒大会”隆重开幕了.大会包含品尝和趣味挑战两个环节,分别向优胜者颁发“首席品酒家”和“首席猎手”两个奖项,吸引了众多品酒师参加. 在大会的晚餐上,调酒师 Rainbow 调制了 ...

  3. 输出前k大的数

    总时间限制: 10000ms单个测试点时间限制:1000ms内存限制:65536kB(noi) 描述 给定一个数组,统计前k大的数并且把这k个数从大到小输出. 输入 第一行包含一个整数n,表示数组的大 ...

  4. 【转】利用ScriptManager实现Javascript调用WebService中的方法

    原文发布时间为:2009-07-01 -- 来源于本人的百度文章 [由搬家工具导入] 前台调用后台方法,或者后台调用前台方法。ScriptManager实现 开发过程中,总想在前台直接调用后台的met ...

  5. angular 右击事件的写法

    .directive('ngRightClick', function ($parse){ return function (scope, element, attrs){ var fn = $par ...

  6. Centos7 安装docker ce

    一. 安装docker 1.升级rpm包 yum -y update 2. 通过命令设置Docker CE 资源库: yum install -y yum-utils yum-config-manag ...

  7. windows下pip安装python module失败

    C:\Python27\pywin32-214>setup.py -q install Building pywin32 2.7.214.0 Traceback (most recent cal ...

  8. Android,一条线串联实心圆布局

    最近遇到一个简单的布局,不是listview的形式.就只是单纯的下图这种: 此界面布局代码: <?xml version="1.0" encoding="utf-8 ...

  9. win10下安装redis

    Window 下安装 下载地址:https://github.com/MSOpenTech/redis/releases Redis 支持 32 位和 64 位.这个需要根据你系统平台的实际情况选择, ...

  10. WPS复制时删除超链接

    按Ctrl+A全选,之后再按Ctrl+Shift+F9,即可一次性全部删除超链接.