JAVA开发工程师面试题集锦(3)

for(Order order : __(4)__ {

  for(__(5)__ : order){

  if

  numbe r += item.getQuantity();

  }

  }

  stdOut.println(product.getCode() + ” ”

  + product.getDescription() + ” ”

  + number + ” ” + number *product.getPrice());

  }

  }

  //其余的方法未列出

  }

  2、[说明]

  传输门是传输系统中的重要装置。传输门具有 Open(打开)、Closed(关闭)、Opening(正在打开)、StayOpen(保持打开)、Closing(正在关闭)五种状态。触发状态的转换事件有 click、complete 和 timeout 三种。事件与其相应的状态转换如图 2-1 所示。

  图 2-1 传输门响应事件与其状态转换图

  下面的[Java 代码 1]与[Java 代码 2]分别用两种不同的设计思路对传输门进行状态模拟,请填补代码中的空缺。

  [Java 代码 1]

  public class Door {

  public static final int CLOSED = 1;

  public static final int OPENING = 2;

  public static final int OPEN = 3;

  public static final int CLOSING = 4;

  public static final int STAYOPEN = 5;

  private int state = CLOSED;//定义状态变量,用不同的整数表示不同状态

  private void setState(int state){this.state = state;} //设置传输门当前状态

  public void getState(){

  // 此处代码省略,本方法输出状态字符串,

  // 例如,当前状态为 CLOSED 时,输出字符串为”CLOSED”

  }

  public void click() { //发生 click 事件时进行状态转换

  if ((1) ) setState(OPENING);

  else if ( (2) ) setState(CLOSING);

  else if ((3) ) setState(STAYOPEN);

  //发生 timeout 事件时进行状态转换

  public void timeout(){ if (state == OPEN) setState(CLOSING); }

  public void complete(){ //发生 complete 事件时进行状态转换

  if (state == OPENING) setState(OPEN);

  else if (state == CLOSING) setState(CLOSED);

  }

  public static void main(String [] args){

  Door aDoor = new Door();

  aDoor.getState();

  aDoor.click();

  aDoor.getState();

  aDoor.complete();

  aDoor.getState();

  aDoor.click();

  aDoor.getState();

  aDoor.click();

  aDoor.getState();

  return;

  }

  }

  [Java 代码 2]

  public class Door {

  public final DoorState CLOSED = new DoorClosed(this);

  public final DoorState OPENING = new DoorOpening(this);

  public final DoorState OPEN = new DoorOpen(this);

  public final DoorState CLOSING = new DoorClosing(this);

  public final DoorState STAYOPEN = new DoorStayOpen(this);

  private DoorState state = CLOSED;

  //设置传输门当前状态

  public void setState(DoorState state){ this.state = state;}

  public void getState(){ //根据当前状态输出对应的状态字符串

  System.out.println(state.getClass().getName());

  }

  public void click(){ (4) ;} //发生 click 事件时进行状态转换

  public void timeout(){ (5) ;}//发生 timeout 事件时进行状态转换

  public void complete(){ (6) ;}//发生 complete 事件时进行状态转换

  

本文已影响6827
上一篇:电子工程师面试题大全 下一篇:中国银联面试笔试题

相关文章推荐

|||||