2

大家好,我的任务快要结束了,我往往总是陷入if/elseJava 中的问题。我的小片段在这里:

// a taxi fare program where if pickup or drop off point is the airport
// and\or CBD the surcharge changes accordingly.

if(!pickup.equals("CBD") && !dropOff.equals("CBD")) {
    Surcharge = 15.0;
} else if (!pickup.equals("airport") && !dropOff.equals("CBD")) {
    Surcharge = 15.0;
} else if (!pickup.equals("airport") || !dropOff.equals("airport")) { 
    Surcharge = 10.0;
} else if (!pickup.equals("CBD") || !dropOff.equals("CBD")) {  
    Surcharge = 5.0;
} else {
    Surcharge = 0.0;
}

没有错误,但似乎没有正确测试。例如,如果我输入"airport"为取件,然后是 的随机位置dropOff,它仍然会打印出 15 美元的附加费,而应该是 10 美元。但如果我把"CBD"aspickup和 airport as 下车,它会正确打印 15 美元。抱歉,如果这还不够明显,但这里是第一个计时器。我花了周末在一个类似的问题上,这非常明显。if即使它显然应该是,它似乎也失败了true

4

3 回答 3

1

你把机场作为接送,这意味着第一条件

if(!pickup.equals("CBD") && (!dropOff.equals("CBD"))){ Surcharge = 15.0; }

已验证。因为接送不是中央商务区而是机场。

希望能帮助到你。

于 2012-09-25T03:53:51.380 回答
0

用简单的英语,你的第一个 if 语句说:

如果此人没有从 CBD 被接走,也没有被送到 CBD,则向他们收取 15 美元的费用。

因此,如果接送地点都不是 CBD(即使其中之一是机场),那么结果将是 15 美元。

通过使用正面测试(例如“如果下车或取货地点CBD”)而不是负面测试(例如“如果下车或取货地点不是CBD”)可能更容易解决问题。

于 2012-09-25T03:54:08.120 回答
0

这是你的规则用英语说的:

  1. 任何完全在中央商务区以外的旅行 -> 15 美元
  2. 否则,任何不离开机场且未到达中央商务区的旅行 -> 15 美元
  3. 否则,任何起点或终点都不是机场的旅行 -> 10 美元
  4. 否则,任何起点或终点都不是 CBD -> 5 美元的旅行
  5. 否则-> $ 0。

您需要确定这是否是您想要的,或者您需要向我们提供英文规则,以便我们检查您的逻辑。

首先,您从机场到随机地点(CBD 除外)的具体行程产生 15 美元 - 请参阅上面的规则 1。

于 2012-09-25T03:57:27.293 回答