Tôi đăng một số dữ liệu vào một webservice đây là đoạn:Tại sao điều này không phải là một tuyên bố
try {
response = UniversalHttpUrlConnection.postJSONObject(ctx.getResources().getString(R.string.delete_one), UniversalHashMapToJSONObjectParams.createObjectForParams(deleteMap));
System.out.println("Response from del task" + response);
if(response != null)
JSONObject jObj = new JSONObject(response);
System.out.println("Deletion" + DatabaseHandler.getInstance(ctx).removeReceipt(receipt));
} catch (JSONException report) {
report.printStackTrace();
}
IDE của tôi là phàn nàn về:
if(response != null)
JSONObject jObj = new JSONObject(response);
Những tuyên bố chính xác con người: Không một tuyên bố - Tại sao điều này xảy ra, tôi có thiếu cái gì ở đây không?
nếu tôi sử dụng:
if (response != null) {
JSONObject jObj = new JSONObject(response);
}
Các IDE không phàn nàn.
Để biết chi tiết ở đây là phương pháp hoàn chỉnh của tôi:
public static void deleteReceipt(Receipt receipt, Context ctx) {
SessionManager sessionManager;
sessionManager = new SessionManager(ctx);
HashMap<String, String> map = sessionManager.getUserDetails();
String email = map.get("email");
if (CheckConnection.isNetworkConnected(ctx)) {
System.out.println("local id " + receipt._id);
Receipt rec = DatabaseHandler.getInstance(ctx).getReceipt(receipt._id);
String webReceiptId = rec.web_receipt_id;
System.out.println("WebReceipt ID = " + webReceiptId);
if (webReceiptId.equalsIgnoreCase("dummy")) {
// Delete from local
System.out.println("Deletion" + DatabaseHandler.getInstance(ctx).removeReceipt(receipt));
} else {
// delete from server
// delete from local
HashMap<String, String> deleteMap = new HashMap<>();
deleteMap.put("email", email);
deleteMap.put("type", "Android");
deleteMap.put("key", Utility.getencryptkey());
deleteMap.put("task_id", webReceiptId);
deleteMap.put("receipt_id", String.valueOf(receipt._id));
String response = null;
try {
response = UniversalHttpUrlConnection.postJSONObject(ctx.getResources().getString(R.string.delete_one),
UniversalHashMapToJSONObjectParams.createObjectForParams(deleteMap));
System.out.println("Response from del task" + response);
if (response != null) {
JSONObject jObj = new JSONObject(response);
}
System.out.println("Deletion" + DatabaseHandler.getInstance(ctx).removeReceipt(receipt));
} catch (JSONException report) {
report.printStackTrace();
}
}
}
}
Oh my! Tôi không biết rằng, bất kỳ lý do cụ thể nào được thực thi? – User3
@ User3 Vâng, khi bạn khai báo một biến, nó phải có một phạm vi. Khi bạn khai báo nó theo cách bạn đã thử, bên trong một câu lệnh if không có dấu ngoặc, nó sẽ có cùng phạm vi với câu lệnh if. Bây giờ, nếu bạn truy cập biến đó sau câu lệnh if thì sao? Theo lý thuyết, biến đó chỉ được khai báo nếu câu lệnh if là đúng. Vì vậy, trình biên dịch không biết nếu biến được khai báo hay không. Vì vậy nó không được phép. – Eran
Bây giờ, rõ ràng hơn là nhờ @Eran – User3