开发者

Why is my if statement not working?

I am trying to check if a gas pump is free for use && full of gas, and then I am trying to make that pump the pump to be used by the cars in a queue.

Thread carThreads[]=new Thread[TOTAL_CARS];
  try {
    Pump pump1 = new Pump();
    pump1.setName("pump1");
    pump1.setFuelAmount(2000);
    pump1.setState(0);

    Pump pump2 = new Pump();
    pump2.setName("pump2");
    pump2.setFuelAmount(2500);
    pump2.setState(0);

    Pump chosenPump = new Pump();

    if( pump1.getState()==0 && pump1.getFuelAmount()<0 ){
      chosenPump = pump1;
      System.out.println("Pump1 is free and has a fuel amount of: " 
       + (pump1.getFuelAmount()) );
    }

    else if ( pump2.getState()==0 && pump2.getFuelAmount()<0 ){
      chosenPump = pump2;
      System.out.println("P开发者_如何学Cump2 is free and has a fuel amount of: " 
       + (pump2.getFuelAmount()) );
    }
    //else{
    //  System.out.println("Must wait for the tanker. It should be here soon");
    //}

    Random r = new Random();

    Car car;

    for(int i = 0; i<TOTAL_CARS; i++){
      car = new Car(i, chosenPump);
      System.out.println("car" + car.getID() + " was created");

      (carThreads[i] = new Thread(car)).start();
      Thread.currentThread().sleep(r.nextInt(10000));

      line.enqueue(car);

      chosenPump.usePump( (Car)line.getfirst(), chosenPump, line );

      System.out.println("this is the new line size for gas: " + line.size());
    }//end for
  }//end try
  catch (Exception e){
  }
}//end of main


You are checking pump1.getFuelAmount()<0

This will check if the pump has a negative amount of fuel. If you want to see if it has a positive amount of fuel, you need to do pump1.getFuelAmount()>0 and pump2.getFuelAmount()>0


Perhaps you want

if(pump1.getState() == 0 && pump1.getFuelAmount() > 0) {

instead of

if(pump1.getState() == 0 && pump1.getFuelAmount() < 0) {

(you've mixed up > and <)


Rewrite your if() statement like so:

if(pump1.getState() == 0 && pump1.getFuelAmount() > 0) {
    chosenPump = pump1;
    System.out.println("Pump1 is free and has a fuel amount of: " 
        + (pump1.getFuelAmount()));
} else if(pump2.getState() == 0 && pump2.getFuelAmount() > 0) {
    chosenPump = pump2;
    System.out.println("Pump2 is free and has a fuel amount of: " 
        + (pump2.getFuelAmount()));
}

You may also want to include a catchall else at the end so you can handle if neither pump is available or if neither has fuel.


A couple of comments:

First, pump1 and pump2. Wouldn't an array of pumps reduce the amount of code? (You can just use loops to check all your pumps for anything)

On your if statement: In theory, you cannot have a negative amount of fuel, so all you want to do is see if you have more than 0. (If you have less than 0, you can't give anymore fuel anyways, so it doesn't matter how far below 0 it is)


change pump1.getFuelAmount()<0 to pump1.getFuelAmount()> 0 same for pump2

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜