某少年宫引进了一批机器人小车。可以接受预先输入的指令,按指令行动。小车的基本动作很简单,只有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

代码:

import java.util.*;

class FuShu

{

public double real;

public double image;

public FuShu()

{

real = 0;

image = 0;

}

public FuShu(double r, double i)

{

real = r;

image = i;

}

public FuShu dot(FuShu x)

{

FuShu r = new FuShu();

r.real = real * x.real - image * x.image;

r.image = real * x.image + image * x.real;

return r;

}

public FuShu dot(double r, double i)

{

FuShu t = new FuShu();

t.real = real * r - image * i;

t.image = real * i + image * r;

return t;

}

}

class Robot

{

private int x = 0;

private int y = 0;

private FuShu dir = new FuShu(1,0);

public void walk(String s)

{

int sum = 0;

for(int i=0; i

{

char c = s.charAt(i);

if(c=='L' || c=='R')

{

x += sum * dir.real;

y += sum * dir.image;

sum = 0;

if(c=='L')

dir = dir.dot(0,1);

else

dir = dir.dot(0,-1);

}

else

sum = sum * 10 + (c-'0');

}

x += sum * dir.real;

y += sum * dir.image;

}

public void show()

{

double d = Math.sqrt(x*x + y*y);

System.out.println(x+","+y + " dir: " + dir.real + "," + dir.image + ", d=" + d);

}

}

public class Walk

{

public static void main(String[] args) throws Exception

{

Robot t = new Robot();

t.walk("3R4");

t.show();

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java自动行走_java数据结构实现机器人行走相关推荐

  1. python做机器人行走动画_python实现机器人行走效果

    本文实例为大家分享了python实现机器人行走效果的具体代码,供大家参考,具体内容如下 #! /usr/bin/env python3 # -*- coding: utf-8 -*- # fileNa ...

  2. java自动填充_java 如何自动填充网页上的用户名和密码?

    展开全部 java 自动填充网页上的用户名和密码有两种方法: 方法一.在input 标签里面的 value属性赋值即可,如32313133353236313431303231363533e78988e ...

  3. java 头尾 队列_Java数据结构之队列(动力节点Java学院整理)

    队列的定义: 队列(Queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表. (1)允许删除的一端称为队头(Front). (2)允许插入的一端称为队尾(Rear). (3)当队列中 ...

  4. java 数据队列_Java 数据结构 - 队列

    Java 数据结构 - 队列 我们今天要讲的数据结构是队列,比如 Java 线程池任务就是队列实现的. 1. 什么是队列 和栈一样,队列也是一种操作受限的线性结构.使用队列时,在一端插入元素,而在另一 ...

  5. java 自动类型_java类型自动转换

    package com.kevin.basic; /* * java类型自动转换方面的知识点 * int类型 double类型 默认类型 */ public class Test { /** * @p ...

  6. java link 使用_Java数据结构之简单的连接点(link)实现方法示例

    本文实例讲述了Java数据结构之简单的连接点(link)实现方法.分享给大家供大家参考,具体如下: 一.概述: 链接点由:数据和指向下个数据的指针构成 如图: 二.简单实现: package com. ...

  7. java自动封箱_Java程序员面试,自动封箱/拆箱原理与包装类的缓冲机制你知道么?(转)...

    概述 本文中小编为大家细致的讲解了Java中基本数据类型对应的包装类以及包装类的缓冲机制在实际开发中的应用 . 并且对Java中基本数据类型的包装类的主要应用---自动封箱.自动拆箱做了底层剖析 . ...

  8. java自动封箱_java自动封箱是什么意思

    3 Autoboxing and Unboxing 自动装箱与解箱 3.1 Converting Primitives to Wrapper Types 看一下代码 int foo = 0; Inte ...

  9. java链表模型_Java数据结构和算法(七)——链表

    前面博客我们在讲解数组中,知道数组作为数据存储结构有一定的缺陷.在无序数组中,搜索性能差,在有序数组中,插入效率又很低,而且这两种数组的删除效率都很低,并且数组在创建后,其大小是固定了,设置的过大会造 ...

  10. java 自动编译_java自动编译批处理

    最近开始学习java 教程中用的是dos命令行环境, 每次都要输入一大堆命令 比较繁琐 (据说命令行方式是新手必须要掌握的 , 但我认为重复输入那几个命令是万万没有必要的 ) 所以就写了个批处理来完成 ...

最新文章

  1. 包邮送25本经典书籍,无任何套路!
  2. 如何将 Nginx 性能提升10倍?这10个“套路”请收好!
  3. Java客户端操作elasticsearch--创建索引(集群模式下)
  4. neutron plugin 笔记
  5. leetcode - 226. 翻转二叉树
  6. 的clear会清空内存吗_Python内存分配时有哪些不为你知的小秘密?
  7. 读者教育浏览器兼容解决方法
  8. 如何发挥思维导图真正的杀伤力?
  9. 2.3、IPMP,PMP,PRINCE2
  10. PHP 生成PDF文件并向PDF添加图片
  11. 视频剪辑技巧,视频旋转/翻转视频最简单的操作
  12. 乐山—都江堰青城山精彩游记
  13. springcloud整合Gateway
  14. vue的组件/data的参数/组件传值/插槽/侦听器/生命周期钩子函数
  15. 交通流优化:一种强化学习方法
  16. 解析新浪微博JSON
  17. 字符串 substring()和 substr()之间的区别
  18. 【HDU】-2112-HDU Today(最短路)
  19. Linux 逻辑卷 pp,Linux中的LVM架构
  20. Android代码中实现 防止手机休眠的处理

热门文章

  1. js基础-21-事件委托
  2. cat的实用技巧 cat>>/etc/profile<<EOF
  3. 企业系统门户需要哪些模块_人力资源管理系统的主要功能模块有哪些?
  4. android点击禁止获取权限,Android 6 Permissions =禁用权限时崩溃并返回应用程序
  5. Angr安装与使用之使用篇(十六)
  6. iOS底层:PAGEZERO的作用
  7. 小说Symbian的签名
  8. Android资源之图像资源(淡入淡出、嵌入)
  9. Spring框架——day04参数校验和文件上传
  10. Server(Iocp)的那些烦恼