溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

java數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)機(jī)器人行走

發(fā)布時(shí)間:2020-08-22 05:43:07 來源:腳本之家 閱讀:163 作者:dreamfly2014 欄目:編程語言

某少年宮引進(jìn)了一批機(jī)器人小車??梢越邮茴A(yù)先輸入的指令,按指令行動(dòng)。小車的基本動(dòng)作很簡單,只有3種:左轉(zhuǎn)(記為L),右轉(zhuǎn)(記為R),向前走若干厘米(直接記數(shù)字)。

例如,我們可以對(duì)小車輸入如下的指令:

15L10R5LRR10R20

則,小車先直行15厘米,左轉(zhuǎn),再走10厘米,再右轉(zhuǎn),...

不難看出,對(duì)于此指令串,小車又回到了出發(fā)地。

你的任務(wù)是:編寫程序,由用戶輸入指令,程序輸出每條指令執(zhí)行后小車位置與指令執(zhí)行前小車位置的直線距離。

【輸入、輸出格式要求】

用戶先輸入一個(gè)整數(shù)n(n<100),表示接下來將有n條指令。

接下來輸入n條指令。每條指令只由L、R和數(shù)字組成(數(shù)字是0~100之間的整數(shù))

每條指令的長度不超過256個(gè)字符。

程序則輸出n行結(jié)果。

每條結(jié)果表示小車執(zhí)行相應(yīng)的指令前后位置的直線距離。要求四舍五入到小數(shù)后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(); 
 } 
}

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。 

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI