【发布时间】:2015-05-16 05:22:18
【问题描述】:
这可能是一个更糟糕的问题,但似乎对我没有任何用处,我在 Parse.com 中有一个这样的数据库(由其他人创建):
现在我必须进行一些验证:
如果用户的城市和用户的状态与数据库的值匹配,则成本将为 30
如果用户的州匹配但城市不匹配,则成本将为 50 否则费用为 100
我写了这段代码:
if (ClientList.size() > 0) {
for (int i = 0; i < ClientList.size(); i++) {
final ParseObject p = ClientList.get(i);
String state = p.getString("State");
String city = p.getString("City");
float cost = Float.parseFloat(p.getString("CostInPrecentage"));
if(stateDeli.equalsIgnoreCase(state) && cityDeli.equalsIgnoreCase(city)) {
shippingCost = cost;
} else if(stateDeli.equalsIgnoreCase(state) && !cityDeli.equalsIgnoreCase(city)) {
shippingCost = cost;
} else {
shippingCost = cost;
}
}
}
这总是返回我的运费 = 100
如果没有,我试图改变
if(stateDeli.equalsIgnoreCase(state)) {
if(cityDeli.equalsIgnoreCase(city)) {
shippingCost = cost;
} else {
shippingCost = cost;
}
} else {
shippingCost = cost;
}
这也返回了我的运费 = 100
如果我这样做:
if(stateDeli.equalsIgnoreCase(state) && cityDeli.equalsIgnoreCase(city)) {
shippingCost = cost;
break;
} else if(stateDeli.equalsIgnoreCase(state) && !cityDeli.equalsIgnoreCase(city)) {
shippingCost = cost;
break;
} else {
shippingCost = cost;
}
它适用于默认和州,但不适用于同时匹配州和城市的情况。
除了这些,我尝试了许多带有 break 的条件,似乎没有什么能完美地工作。 您能否建议如何验证这一点。
最后我管理了这样的条件:
if (stateDeli.equalsIgnoreCase(state)&&cityDeli.equalsIgnoreCase(city)) {
shippingCost = cost;
break;
}
else if (stateDeli.equalsIgnoreCase(state) && ((city == null || city =="" || "Default".equalsIgnoreCase(city)))) {
shippingCost = cost;
break;
}
else if("Default".equalsIgnoreCase(city) && "Default".equalsIgnoreCase(state)){
shippingCost = cost;
break;
}
【问题讨论】:
-
您的情况是正确的。确保值是正确的,这样做放一个断点并检查值。
-
您是否尝试在前两个
if-else条件中添加break? -
是的,我尝试了中断,但也无法正常工作
-
您的 shippingCost 变量在哪里?在 for or 的内部?
-
不,这是循环外的类变量,我也尝试了循环内的变量..
标签: java android if-statement for-loop