Java 为什么我的if语句不起作用?
我试着检查一个加油泵是否可以免费使用&充满了汽油,然后我试着让这个泵成为排队的汽车使用的泵Java 为什么我的if语句不起作用?,java,if-statement,Java,If Statement,我试着检查一个加油泵是否可以免费使用&充满了汽油,然后我试着让这个泵成为排队的汽车使用的泵 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.s
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("Pump2 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
也许你想要
if(pump1.getState() == 0 && pump1.getFuelAmount() > 0) {
而不是
if(pump1.getState() == 0 && pump1.getFuelAmount() < 0) {
您混淆了>和您正在检查pump1.getFuelAmount0和pump2.getFuelAmount>0更改pump1.getFuelAmount 0
与pump2相同,重写if语句,如下所示:
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()));
}
您可能还希望在末尾添加一个catch all-other,以便在两个泵都不可用或都没有燃油的情况下进行处理。几点注释:
首先,泵1和泵2。泵阵列不会减少代码量吗?您可以使用回路检查所有泵的任何情况
在你的if声明中:理论上,你不能有一个负的燃料量,所以你要做的就是看看你是否有超过0的燃料量。若你们的燃油量小于0,你们无论如何都不能提供更多的燃油,所以不管它低于0多远,若这个语句不起作用,那个么它就不重要了?有什么错误吗?我们需要更多的细节。为什么要发布你自己的答案,有人已经发布了?