java实现第三届蓝桥杯机器人行走
2023-09-14 08:58:10 时间
机器人行走
【编程题】(满分18分)
某少年宫引进了一批机器人小车。可以接受预先输入的指令,按指令行动。小车的基本动作很简单,只有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
【注意】
请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!
请把所有类写在同一个文件中,调试好后,存入与【考生文件夹】下对应题号的“解答.txt”中即可。
相关的工程文件不要拷入。
请不要使用package语句。
源程序中只能出现JDK1.5中允许的语法或调用。不能使用1.6或更高版本。
import java.util.Scanner;
public class Main {
public static String Left = "ULDR";
public static String Right = "URDL";
public double getResult(String A) {
double r = 0, x = 0, y = 0;
char way = 'U';
for(int i = 0;i < A.length();i++) {
int start = i;
if(A.charAt(start) >= '0' && A.charAt(start) <= '9') {
while(start < A.length() && A.charAt(start) >= '0' && A.charAt(start) <= '9')
start++;
int num = Integer.valueOf(A.substring(i, start));
if(way == 'U')
y += num;
else if(way == 'L')
x -= num;
else if(way == 'D')
y -= num;
else if(way == 'R')
x += num;
i = start - 1;
} else {
char temp = A.charAt(i);
if(temp == 'L') {
int p = Left.indexOf(way+"");
p = (p + 1) % 4;
way = Left.charAt(p);
} else if(temp == 'R') {
int p = Right.indexOf(way+"");
p = (p + 1) % 4;
way = Right.charAt(p);
}
}
}
r = Math.sqrt(x*x + y*y);
return r;
}
public static void main(String[] args) {
Main test = new Main();
Scanner in = new Scanner(System.in);
int n = in.nextInt();
double[] result = new double[n];
for(int i = 0;i < n;i++) {
String A = in.next();
result[i] = test.getResult(A);
}
for(int i = 0;i < n;i++) {
System.out.printf("%.2f", result[i]);
System.out.println();
}
}
}
相关文章
- java用什么软件_Java编程什么软件最好用?
- java long string 转换_Java long 转成 String的实现[通俗易懂]
- java 实现 按位异或_Java 按位异或的性质及其妙用
- java源程序文件的扩展名_使用Java语言编写的源程序保存时的文件扩展名是什么…
- java单例模式——详解JAVA单例模式及8种实现方式
- java编程软件下载_Ee Java(Java编程软件) V1.1.0 官方版
- md5 java 实现_MD5加密的Java实现
- MySQL字段类型如何转为java_Java JDBC中,MySQL字段类型到JAVA类型的转换
- java webservice实现_JAVA WebService的实现方式
- JAVA数据库连接池_java与数据库的连接怎么实现
- java 自定义类加载器_JAVA中如何使用应用自定义类加载器「建议收藏」
- rtsp 获取视频流 java_Java获取rtsp视频流,实现rtsp流预览功能,并将视频流每帧保存成图片…
- Java连接MySQL:实现数据互通(java如何连接mysql)
- 注册MySQL,让你的Java技能更上一层楼(java注册mysql)
- 删除Linux中的Java程序(linux删除java)
- Oracle转Java实现跨平台开发的奇妙之旅(oracle转java)
- 数据库简易指南:如何使用 Java 连接 MySQL 数据库(java连接mysql)
- 使用Java连接MySQL实现查询功能(java连接mysql查询)
- Java编程实现MySQL表备份(java备份mysql表)
- 在Linux上编译Java 实用教程指南(linux上编译java)
- Linux与Java调用C编程实战(linux java调c)
- 管理Linux下Java版本管理:轻松实现多版本切换(linux下java版本)
- 使用Java程序执行Linux指令:实现自动化操作(java执行linux命令)
- 实现Java认证让你离Oracle更近一步(java认证oracle)
- 编程Oracle数据库中实现Java编程的突破之道(oracle使用java)
- 使用Java实现Redis锁定的实现(redis锁定 java)
- 利用Redis锁实现Java程序并发控制(redis锁java实现)
- Java实现Redis计数器功能(redis计数 java)