java面试题之编程【火星车问题】

/**
 *author:Kevin
 *date:2011-07-17
 *function:The problem of Mars car.

 *China firmly opposes Obama-Dalai meeting
 *The WAR is actually begun!Now you are the Commander of the Fleet.
 *You  can input command to control the Mars Car to go straight,
 *turn left,turn right,and the car maybe your loyal soldier.
 *The command input like this string:LL1LRR89L2,
 *and at last  report the location of the car to Commander.
 *L means turn left,R means turn right,number0-9 means how far the car can go
 *request:1).ExtremeProgramming 2).Pair Programming 3).Test Driven Development
 */

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;

public class TestMarsCar {

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

  BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
  System.out
    .println("Now,the Mars car is loarding on the Mars,input the loaction");
  System.out.println("input x:(number)");
  String x = bf.readLine();
  System.out.println("input y:(number)");
  String y = bf.readLine();
  System.out.println("input direction:(N,W,S,E)");
  String f = bf.readLine();
  System.out.println("the car is loaded in (" + x + "," + y + "," + f
    + ")");
  // create Marscar object
  Marscar car = new Marscar(x, y, f);

  while (true) {
   System.out.println("\n***********************"
     + "\npress 1or 2 to select *" + "\n1:new command         *"
     + "\n2:exit                *"
     + "\n***********************\ninput number:");
   Scanner s1 = new Scanner(System.in);
   int ints1 = Integer.parseInt(s1.next());
   if (ints1 == 1) {
    System.out.println("input new command like (L,R,0-9):");

    Scanner s = new Scanner(System.in);
    String commands = s.next();
    for (int i = 0; i < commands.length(); i++) {
     String command = String.valueOf(commands.charAt(i));

     if (command.equals("L")) {
      car.turnLeft(car.getF());
     } else if (command.equals("R")) {
      car.goRight(car.getF());
     } else {
      int n = Integer.parseInt(command);
      car.goAhead(n);
     }
     // show the location of mars car.
     System.out.println("the new location is (" + car.getX()
       + "," + car.getY() + "," + car.getF() + ")");

    }
   } else if (ints1 == 2) {
    System.exit(0);
   } else {
    System.out.println("YOu command is Wrong!");
   }
  }
 }
}

// -----------------------------------------
// class Marscar
class Marscar {
 private String x; // x-coordinate
 private String y; // Y-coordinate
 private String f; // direction

 public String getX() {
  return x;
 }

 public void setX(String x) {
  this.x = x;
 }

 public String getY() {
  return y;
 }

 public void setY(String y) {
  this.y = y;
 }

 public String getF() {
  return f;
 }

 public void setF(String f) {
  this.f = f;
 }

 // constructor
 public Marscar(String x, String y, String f) {
  this.x = x;
  this.y = y;
  this.f = f;
 }

 public void turnLeft(String f) {
  System.out.println("go left");
  if (f.equals("N")) {
   setF("W");
  } else if (f.equals("E")) {
   setF("N");
  } else if (f.equals("S")) {
   setF("E");
  } else if (f.equals("W")) {
   setF("S");
  }
 }

 public void goRight(String f) {
  System.out.println("go right");
  if (f.equals("N")) {
   setF("E");
  } else if (f.equals("E")) {
   setF("S");
  } else if (f.equals("S")) {
   setF("W");
  } else if (f.equals("W")) {
   setF("N");
  }
 }

 // input number to control how far the car go ahead
 public void goAhead(int n) {
  int intx = Integer.parseInt(x);
  int inty = Integer.parseInt(y);
  if (this.getF().equals("N")) {
   intx += n;
  } else if (this.getF().equals("E")) {
   inty += n;
  } else if (this.getF().equals("S")) {
   intx -= n;
  } else if (this.getF().equals("W")) {
   inty -= n;
  }
  this.x = String.valueOf(intx);
  this.y = String.valueOf(inty);
 }
}

你可能感兴趣的:(java,编程,面试,String,command,input)