Ein bestimmter Jugendpalast führte eine Reihe von Roboterautos ein. Sie können vorgeführte Anweisungen akzeptieren und ihnen folgen. Die grundlegenden Bewegungen eines Autos sind sehr einfach, es gibt nur 3 Typen: links abbiegen (l), biegen rechts ab (als R) und gehen Sie einige Zentimeter direkt vor (direkt).
Zum Beispiel können wir den folgenden Befehl in das Auto eingeben:
15L10R5LRR10R20
Dann fährt das Auto zuerst 15 cm direkt, biege links, dann 10 cm, dann biege rechts, ...
Es ist nicht schwer zu erkennen, dass das Auto für diese Befehlszeichenfolge zu seinem Ausgangspunkt zurückgekehrt ist.
Ihre Aufgabe lautet: Schreiben Sie ein Programm, Eingabeanweisungen des Benutzers und das Programm gibt die gerade Linie -Entfernung zwischen der Autoposition aus, nachdem jede Anweisung ausgeführt wurde, und die Autoposition, bevor die Anweisung ausgeführt wird.
[Anforderungen für Eingabe- und Ausgangsformat]
Der Benutzer tritt zunächst in eine Ganzzahl N (n <100) ein, die angibt, dass es als Nächte Anweisungen geben wird.
Geben Sie als nächstes n Anweisungen ein. Jede Anweisung besteht nur aus L, R und Zahlen (Zahlen sind Zahlen zwischen 0 und 100)
Jede Anweisung hat nicht mehr als 256 Zeichen.
Das Programm gibt n Ergebnisse aus.
Jedes Ergebnis repräsentiert den geraden Leitungsabstand zwischen den vorderen und hinteren Positionen des Wagens bei der Ausführung des entsprechenden Befehls. Erfordert Rundung auf 2 Dezimalstellen.
Zum Beispiel: Benutzereingabe:
5
L100R50R10
3lll5RR4L12
LL
100r
5L5L5L5
Dann gibt das Programm aus:
102.96
9.06
0,00
100.00
0,00
Code:
import Java.util.*; Klasse fushu {public double Real; öffentliches Doppelbild; public fushu () {real = 0; Bild = 0; } public fushu (double r, double i) {real = r; Bild = i; } public fushu dot (fushu x) {fushu r = new fushu (); R. real = real * x.real - Bild * x.image; r.image = real * x.image + Bild * x.real; return r; } public fushu dot (double r, double i) {fushu t = new fushu (); t.real = real * r - Bild * i; t.image = real * i + Bild * r; return t; }} Klasse Robot {private int x = 0; private int y = 0; Private Fushu Dir = New Fushu (1,0); public void Walk (String s) {int sum = 0; für (int i = 0; i <sength (); 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); sonst 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) löst eine Ausnahme aus {Robot t = neuer Robot (); T.Walk ("3R4"); t.show (); }}Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.