题目描述:
某少年宫引进了一批机器人小车。可以接受预先输入的指令,按指令行动。小车的基本动作很简单,只有3种:左转(记为L),右转(记为R),向前走若干厘米(直接记数字)。
例如,我们可以对小车输入如下的指令:
15L10R5LRR10R20
则,小车先直行15厘米,左转,再走10厘米,再右转,...
不难看出,对于此指令串,小车又回到了出发地。
你的任务是:编写程序,由用户输入指令,程序输出每条指令执行后小车位置与指令执行前小车位置的直线距离。
【输入、输出格式要求】
用户先输入一个整数n(n<100),表示接下来将有n条指令。
接下来输入n条指令。每条指令只由L、R和数字组成(数字是0~100之间的整数)
每条指令的长度不超过256个字符。
程序则输出n行结果。
每条结果表示小车执行相应的指令前后位置的直线距离。要求四舍五入到小数后2位。
例如:用户输入:
5
L100R50R10
3LLL5RR4L12
LL
100R
5L5L5L5
则程序输出:
102.96
9.06
0.00
100.00
0.00
分析:字符串处理,先将输入的字符串处理,字母和数字分开,然后模拟小车的动作,起点设为(0,0),终点设为(x,y)。然后4个方向,上左下右四个方向分别对应y+距离,x-距离,y-距离,x+距离。最后sqrt(x*x+y*y)得到结果,最后格式化输出保存两位小数【System.out.print("%.2f",结果);】

代码:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner; public class test_2 {
public static int x=0;
public static int y=0;
//处理输入字符串,将不同命令放到List中
public static List<String> dispose(String str){
List<String> list = new ArrayList<String>();
String st = "";
for(int i=0;i<str.length();i++){
if(str.charAt(i)=='L' || str.charAt(i)=='R'){
list.add(""+str.charAt(i));
continue;
}
if(str.charAt(i)<='9' && str.charAt(i)>='0'){
if(i+1<str.length() && (str.charAt(i+1)<='9' && str.charAt(i+1)>='0')){
st+=""+str.charAt(i);
}
else{
st+=""+str.charAt(i);
list.add(st);
st="";
}
}
}
return list;
}
public static void change(List<String> list){
//1上,2左,3下,4右,默认是向前
int direction = 1;
for(String st:list){
if(st.equals("L")){
direction=direction%4+1;
}else if(st.equals("R")){
if(direction-1 == 0)
direction=4;
else
direction--;
}else{
move(direction,Integer.parseInt(st));
}
}
}
public static void move(int direction,int distance){
switch (direction) {
case 1:
y+=distance;
break;
case 2:
x-=distance;
break;
case 3:
y-=distance;
break;
case 4:
x+=distance;
break;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
for(int i=0;i<n;i++){
x=0;y=0;
String st = scanner.next();
change(dispose(st));
System.out.printf("%.2f",Math.sqrt(x*x+y*y));
}
scanner.close();
}
}

第三届蓝桥杯Java高职组决赛第三题的更多相关文章

  1. 第三届蓝桥杯Java高职组决赛第一题

    题目描述: 看这个算式: ☆☆☆ + ☆☆☆ = ☆☆☆ 如果每个五角星代表 1 ~ 9 的不同的数字. 这个算式有多少种可能的正确填写方法? 173 + 286 = 459 295 + 173 = ...

  2. 2012年第三届蓝桥杯Java本科组省赛试题解析

    题目地址:https://wenku.baidu.com/view/326f7b4be518964bcf847c96.html?rec_flag=default    => 百度文档 题目及解析 ...

  3. 蓝桥杯java高职组

    标题1: 猜年龄     美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学.他曾在1935~1936年应邀来中 国清华大学讲学.     一次,他参加某个重要会议,年轻的脸孔引人注目.于是 ...

  4. 第七届(16年)蓝桥杯java B组决赛真题 愤怒的小鸟 解题思路

    愤怒小鸟 X星球愤怒的小鸟喜欢撞火车! 一根平直的铁轨上两火车间相距 1000 米两火车 (不妨称A和B) 以时速 10米/秒 相对行驶. 愤怒的小鸟从A车出发,时速50米/秒,撞向B车,然后返回去撞 ...

  5. 第八届蓝桥杯java b组第六题

    标题:最大公共子串 最大公共子串长度问题就是:求两个串的所有子串中能够匹配上的最大长度是多少. 比如:"abcdkkk" 和 "baabcdadabc",可以找 ...

  6. 第六届蓝桥杯java b组第三题

    第三题 三羊献瑞 观察下面的加法算式: 其中,相同的汉字代表相同的数字,不同的汉字代表不同的数字. 请你填写“三羊献瑞”所代表的4位数字(答案唯一),不要填写任何多余内容. 答案这个题目完全可以使用暴 ...

  7. 49-2015年第6届蓝桥杯Java B组

    1.三角形面积 如图1所示.图中的所有小方格面积都是1. 那么,图中的三角形面积应该是多少呢? 请填写三角形的面积.不要填写任何多余内容或说明性文字.   image.png   计算方法: 8 * ...

  8. 46-2016 蓝桥杯 java B 组

    1.煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形), 第四层10个(排列成三角形), .... 如果一共有100层,共有多少个煤 ...

  9. 36-2018 蓝桥杯Java B组试题及答案

    1:第几天2000年的1月1日,是那一年的第1天.那么,2000年的5月4日,是那一年的第几天? 注意:需要提交的是一个整数,不要填写任何多余内容. 用excel算,答案125. 2.标题:方格计数 ...

随机推荐

  1. [SVN]创建本地的SVN仓库

    本地创建SVN仓库,就算是自己平时写代码也养成使用SVN的习惯. 环境: OS:Mac OS X10.9.1 SVN Version:1.7.10 创建本地SVN仓库: $svnadmin creat ...

  2. linux 查看某进程或程序的网卡流量(转)

    一.nethogs介绍 分享一个linux 下检测系统进程占用带宽情况的检查.来自github上的开源工具. 它不依赖内核中的模块.当我们的服务器网络异常时,可以通过运行nethogs程序来检测是那个 ...

  3. Cocos2d-x内存管理解说在ios开发中

    使用过 Cocos2d-x 都知道,其中有一套自己实现的内存管理机制,不同于一般 C++ 的编写常规,而在使用前,了解其原理是有必要的,网上已经有很多对内部实现详细解说的文章.而对于使用者而言,并不需 ...

  4. 使用notepad运行python

    Notepad++ 是一个开源的文本编辑器,功能强大而且使用方便,一般情况下,Notepad++作为代码查看器,很方便,但是每次要运行的时候,总是需要用右键打开其他的IDE来编译和运行,总有些不方便. ...

  5. [置顶] think in java interview-高级开发人员面试宝典(七)

    上两周研发任务太紧了,所以担搁了一下,我们继续我们的面试之旅. 下面是一个基于图书系统的15道SQL问答,供大家参考 问题描述:本题用到下面三个关系表:CARD     借书卡.   CNO 卡号,N ...

  6. Cocos2dx 3.0 过渡篇(二十六)C++11多线程std::thread的简单使用(上)

    昨天练车时有一MM与我交替着练,聊了几句话就多了起来,我对她说:"看到前面那俩教练没?老色鬼两枚!整天调戏女学员."她说:"还好啦,这毕竟是他们的乐趣所在,你不认为教练每 ...

  7. 一张图总结Google C++编程规范(Google C++ Style Guide)

    Google C++ Style Guide是一份不错的C++编码指南,我制作了一张比較全面的说明图,能够在短时间内高速掌握规范的重点内容.只是规范毕竟是人定的,记得活学活用.看图前别忘了阅读以下三条 ...

  8. Git——git 上传时 遗漏文件解决办法

    今天在Server上建立一个git 库,把本地的code 上传到Server,再次clone下来时,发现少了些文件.原来git 工具不上上传一些二进制,pdf,.patch等一些文件.在上传时,git ...

  9. vim忽略大写和小写查找配置

    作者:zhanhailiang 日期:2014-12-17 默认 vim 的查找是区分大写和小写,可通过下面两种方式实现忽略大写和小写查找 set ic? noignorecase 1 指令设定: : ...

  10. OpenLayers学习笔记4——使用jQuery UI实现測量对话框

    OpenLayers学习最好的方式就是跟着其自带的演示样例进行学习,另外对web前端的开发设计要了解,慢慢积累,这样在一般的小项目中应该是足够用了. 本篇參照量測demo实现对话框形式的量測,抛砖引玉 ...