软件编程
位置:首页>> 软件编程>> java编程>> java数据结构实现机器人行走

java数据结构实现机器人行走

作者:dreamfly2014  发布时间:2023-12-04 00:44:24 

标签:java,机器人

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

来源:http://blog.csdn.net/u014078192/article/details/23050297

0
投稿

猜你喜欢

  • 前言在公司的图书馆项目中曾经用过截取字符串的方法,项目是java语言的;最近在公司的另一个项目中又需要截取字符串,一种环境是C#语言,一种环
  • 本文实例为大家分享了使用C#写一个时钟,供大家参考,具体内容如下时钟是这样的一共使用四个控件即可:WinFrom窗体应用程序代码:using
  • 在一个项目中我们可能会需要用到相同的布局设计,如果都写在一个xml文件中,代码显得很冗余,并且可读性也很差,所以我们可以把相同布局的代码单独
  • 介绍在 .NET4.0 之前,如果我们需要在多线程环境下使用 Dictionary 类,除了自己实现线程同步来保证线程安全外,我们没有其他选
  • 之前在Retrofit源码初探一文中我们提出了三个问题:什么时候开始将注解中参数拼装成http请求的信息的?如何产生发起http请求对象的?
  • 本文研究的主要是java中的null“类型”的相关实例,具体介绍如下。先给出一道简单的null相关的题目,引发我们对null的探讨,后面会根
  • Java的super关键字当子类重写父类的方法后,子类对象将无法直接访问父类被重写的方法。为了解决这个问题,在Java中专门提供了一个sup
  • 有些手机在电话接通后会有振动提示,这有个好处就是可以等到接通后再放到耳边接听,减少辐射。本文就讲讲如何在Android手机中实现这种接通电话
  • 一、异常分类       java异常分为"检查"
  • 前言众所周知,encache是现在最流行的java开源缓存框架,配置简单,结构清晰,功能强大。通过注解 @Cacheable 可以快速添加方
  • 最近在做一个每天定点从FTP自动下载节目.xml并更新到数据库的功能。首先想到用 FileSystemWatcher来监控下载到某个目录中的
  • 本文实例讲述了Java泛型定义与用法。分享给大家供大家参考,具体如下:1. 泛型的由来先看如下代码:import java.util.Lis
  • 一. 首先Swagger是什么?Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。
  • 前面博客我们在讲解数组中,知道数组作为数据存储结构有一定的缺陷。在无序数组中,搜索性能差,在有序数组中,插入效率又很低,而且这两种数组的删除
  • 前言老了,老了,那天有位小同事问我Android跳转三方应用时有什么要注意的?是否可以直接跳?如何传递参数过去? 嗯… 我竟然说需要root
  • 本文实例讲述了Java设计模式之抽象工厂模式。分享给大家供大家参考,具体如下:具体工厂类:生产创建某一类具体产品对象。抽象产品类可以使用接口
  • 一、设计模式概述设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他
  • 背景在我们实际生产容器化部署过程中,往往会遇到 Docker 镜像很大,部署发布很慢的情况影响 docker 镜像大小的因素,主要有以下三个
  • 本文实例讲述了C#静态构造函数用法。分享给大家供大家参考。具体如下:当我们想初始化一些静态变量的时候,就需要用到静态构造函数了。这个静态构造
  • 这篇文章主要介绍了简单了解Java方法的定义和使用实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
手机版 软件编程 asp之家 www.aspxhome.com