当前位置: 代码迷 >> J2SE >> 怎么用JAVA实现这个盒子
  详细解决方案

怎么用JAVA实现这个盒子

热度:197   发布时间:2016-04-24 13:24:57.0
如何用JAVA实现这个盒子?
假设需要制造一个带有四个按钮和两个灯泡的盒子并且有以下功能:
  (1)有四个按钮输入,分别称为B1,B2,B3,B4;
  (2)有两个灯泡作为输出,分别称为L1和L2;
  (3)B1是打开电源的按钮;
  (4)B4是关闭电源的按钮;
  (5)B2和B3是操作按钮;
  (6)在B1被按下后及B4被按下前,系统应称为电源打开状态;
  (7)在B4被按下后及B1被按下前,系统应称为电源关闭状态;
  (8)在电源关闭状态下,B2和B3按钮不起作用;
  (9)在电源关闭状态下,灯应不亮;
  (10)从最近一次电源打开状态算起,如果B2被按下的次数比B3被按下的次数多,L1亮,否则L2亮;
  (11)任何时候都不能有一个以上的灯泡亮;
  (12)如果其中的一个灯泡出现故障,另一个灯泡应以2秒钟的间隔闪烁,而不管B2和B3的操作过程。当B4按下时,闪烁停止;当B1被按下是,闪烁重新开始。当故障别排除后闪烁停止,
  系恢复正常状态;

  小弟初学JAVA,请问用JAVA如何实现这个程序?希望大家可以帮帮我,谢谢大家了!

------解决方案--------------------
Java code
//保存为TestBox.java//测试类public class TestBox{    public static void main(String[] args){        Box box = new Box();                box.b1(); //打开电源        box.b2();//按b2 (对应L1)        box.b3(); //按b3 (对应L2)        box.b3();  //按b3 (对应L2)        box.showL1L2Status();        box.brokenLight1(); //砸烂L1        box.showL1L2Status();//显示2个灯的状态        box.b4(); //关灯        box.showL1L2Status(); //显示2个灯的状态        box.b1(); //再开灯        box.showL1L2Status(); //显示2个灯的状态        box.repairLight(); //关灯,修理灯        box.showL1L2Status(); //显示2个灯的状态        box.b1(); //修理后重新打开电源        box.b2();         box.showL1L2Status();            }}//盒子类class Box {    private boolean power = false;//电源    private Light l1 = new Light();//电灯一    private Light l2 = new Light();//电灯二   public void b1(){ //开打电源       power = true;       l1.setCount(0); //每次重开电源,重新计算L1,L2被按的次数       l2.setCount(0);   }   public void b2(){  //按b2按钮,对应L1       if( !power){ //如果电源没开,不响应,           return;       }       else{           this.l1.AddCount();           //System.out.println("l2:" + l1.getCount());           if( !checkBroken()){ //只有灯没坏时才响应               int light1Count = l1.getCount();               int light2Count = l2.getCount();               if( light1Count > light2Count){                    l1.setStatus("light");                    l2.setStatus("unlight");               }               else {if ( light2Count > light1Count){                   l2.setStatus("light");                   l2.setStatus("unlight");               }               else {                   l1.setStatus("unlight");                   l2.setStatus("unlight");               }}           }//if(!checkBroken)           else{  //灯坏了,就不响应               if( l1.getStatus().equals("broken")){                   l2.setStatus("glimpse");               }               else{                   l1.setStatus("glimpse");               }           }// checkBroken else        }   }    public void b3(){ //参照b2的注释       if( !power){            return;       }       else{           this.l2.AddCount();           //System.out.println("l2:" + l2.getCount());           if( !checkBroken()){               int light1Count = l1.getCount();               int light2Count = l2.getCount();               if( light1Count > light2Count){                    l1.setStatus("light");                    l2.setStatus("unlight");               }               else{ if ( light2Count > light1Count){                   l2.setStatus("light");                   l1.setStatus("unlight");               }               else {                   l1.setStatus("unlight");                   l2.setStatus("unlight");               } }           }//if(!checkBroken)           else{               if( l1.getStatus().equals("broken")){                   l2.setStatus("glimpse");               }               else{                   l1.setStatus("glimpse");               }           }// checkBroken else        }   }   public void b4(){ //关电源       power = false;       //没坏的话,就设置灯为关闭状态,否则保持原来的状态       if ( (!this.l1.getStatus().equals("broken"))                &&(!this.l2.getStatus().equals("broken"))){           l1.setStatus("unlight");           l2.setStatus("unlight");       }   }     //关灯,并将坏的灯泡休息好    public void repairLight(){        System.out.println("操作:关电灯,修理");        b4();        l1.setStatus("unlight");        l2.setStatus("unlight");    }    //将L1砸烂    public void brokenLight1(){        l1.setStatus("broken");        l2.setStatus("glimpse");            }    //将L2砸烂    public void brokenLight2(){        l2.setStatus("broken");        l1.setStatus("glimpse");            }    //显示目前灯的状态    public void showL1L2Status(){        if(power){       System.out.println("L1的状态:" + l1.getStatus());       System.out.println("L2的状态:" + l2.getStatus());        }        else{            System.out.println("L1的状态:unlight");            System.out.println("L2的状态:unlight");        }    }    //检查是否有灯坏了,有的话返回true,否则返回false    public boolean checkBroken(){        boolean flag = false;        if( l1.getStatus().equals("broken") || l2.getStatus().equals("broken")){            flag = true;        }        return flag;    }    }//灯泡类class Light{    private String status = "unlight";//状态,从unlight light glimpse broken中选一个    private int count = 0;    //被按下按钮的次数+1    public void AddCount(){        this.count++;    }    //取得被按下的次数    public int getCount(){        return this.count;    }    //设置被按下的次数    public void setCount(int count){        this.count = count;    }    //取得灯泡的状态    public String getStatus(){        return this.status;    }    //设置灯泡的状态    public void setStatus(String status){        this.status = status;    }}
  相关解决方案