這可能是更壞的問題,但似乎沒有爲我工作,我有這樣的Parse.com數據庫(由其他人創建):如果別人在for循環的Android
現在我必須把一些驗證:
如果用戶所在的城市,並與數據庫的價值用戶的狀態,比賽的費用將是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
改變如果我這樣做soemthig:
if(stateDeli.equalsIgnoreCase(state) && cityDeli.equalsIgnoreCase(city)) {
shippingCost = cost;
break;
} else if(stateDeli.equalsIgnoreCase(state) && !cityDeli.equalsIgnoreCase(city)) {
shippingCost = cost;
break;
} else {
shippingCost = cost;
}
它適用於默認和狀態,但不是我匹配狀態和城市的情況。
除了這些,我嘗試了許多休息的條件也似乎沒有完美的工作。 你能否建議如何驗證這一點。
最後我總算是這樣的條件:
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;
}
你的情況是正確的。確保值是正確的,這樣做放置一個斷點並檢查值。 – Rustam
你有沒有嘗試在前兩個'if-else'條件中添加'break'? –
是的,我嘗試了休息,也沒有正常工作 –