输入描述:
一行字符串
输出描述:
最终坐标,以逗号分隔
描述:
开发一个坐标计算工具, 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)
数据范围:每组输入的字符串长度满足 1\le n \le 10000 \1≤n≤10000 ,坐标保证满足 , 且数字部分仅含正数
思路:
(暴力)
1.先对输入进行判断,要求满足条件。
2.设置一个循环,取得两个;;之间的字符串。若是正确格式,进入ifcase语句,ifcase语句对坐标进行操作。若不是则继续下一个;直至执行完整个字符串
3.输出最终结果
结论:可以的。但代码写不出来,太生疏了。
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main{ public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String input;//用于接收输入信息 String[] strs;//存放动作 int x=0,y=0;//坐标 while((input = reader.readLine()) != null){//输入未空 strs = input.split(";");//获得动作 for(String str : strs){//对每个动作做如下操作 int v = 0;//操作距离 if("".equals(str)||str.length()>3) continue;//判断是否是正确格式 for(int i = 1;i<str.length();i++){//如动作是W12,两次取得的是”1“、“2” int t = str.charAt(i) - '0';//看各个位数为多少,转10进制 if(t>=0&&t<=9){ if(i ==1 &&str.length()!=2){ v = v+t*10;//十位,要*10 }else{ v = v+t;//个位 } }else{ v = 0; break; } } char c = str.charAt(0);//动作的方向 switch(c){ case 'A': x = x - v; break; case 'D': x = x + v; break; case 'W': y = y + v; break; case 'S': y = y - v; break; } } System.out.println(x + "," + y);//输出最后坐标 } } }
谷歌技术点:
1.BufferedReader使用
BufferedReader buf = null;//声明BufferedReader对象 buf = new BufferedReader(new InputStreamReader(System.in)); //初始化并使用system.in输入赋值 String str = null;//用于接收输入 System.out.println("请输入内容:"); try{ str = buf.readLine();//读取一行数据 }catch{ e.printStackTrace();//输出信息 } System.out.println("输入内容为:"+str) }
2.分割字符串,获得坐标动作数组
String.spilt("*",^);
其中*是分隔符,通常为“,”或“;”
^是按分隔符截取多少个,为整型数字
注意:
1.转义字符需要在分隔符前加\\,如
如果使用“.”作为分隔符必须写成下面的写法:
String.split("\\.");
2.多个分隔符,可以使用“|”为连字符
//另外,如果分隔符是转义字符需要使用“\\” String.split(A|B);
3.java的try catch语句
1. try { 2. 逻辑代码块1; 3. } catch(ExceptionType e) { 4. 处理代码块1; 5. }
4.java的for语句
String[] strs; String str; for(String str:strs){ }