Chủ đề: Loại bỏ phần tử 0 trong mảng
-
07-10-2014, 09:26 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Loại bỏ phần tử 0 trong mảng
Mình có đoạn code sau:
Mã:String detail = "Mức nhiên liệu:" + Math.round(arrValue.get(i).GetFuelLevel()) + " l\ Q.Đường đi được trong ngày:" + Math.round(objrp.GetOdometer(AccountID, deviceID, (long)arrValue.get(i).getTimeStamp()))//here //+ mileage[i] + " km\ Thời gian: " + ConvertFromEpoch(arrValue.get(i).getTimeStamp()) + "\ Địa điểm:" + GetUTF8FromNCRDecimalString(arrValue.get(i) .getAddress()) + "\ Trạng thái: " + GetUTF8FromNCRDecimalString(statusDescription);
Mã:Math.round(objrp.GetOdometer(AccountID, deviceID, (long)arrValue.get(i).getTimeStamp()))
Mã:long mileage[] = new long[1000];//store value of mileages mileage[i] = Math.round(objrp.GetOdometer(AccountID, deviceID, (long)arrValue.get(i).getTimeStamp())); if(mileage[i] == 0) { mileage[i] = mileage[i-1]; }
cả đoạn code như sau:
Mã:for (int i = 0; i < arrValue.size(); i++) { String statusDescription = StatusCode.getDescription(AccountID, arrValue.get(i).GetStatusCode(), privLabel, null); long mileage[] = new long[1000];//store value of mileages mileage[i] = Math.round(objrp.GetOdometer(AccountID, deviceID, (long)arrValue.get(i).getTimeStamp())); if(mileage[i] == 0) { mileage[i] = mileage[i-1]; } String detail = "Mức nhiên liệu:" + Math.round(arrValue.get(i).GetFuelLevel()) + " l\ Q.Đường đi được trong ngày:" //+ Math.round(objrp.GetOdometer(AccountID, deviceID, (long)arrValue.get(i).getTimeStamp()))//here + mileage[i] + " km\ Thời gian: " + ConvertFromEpoch(arrValue.get(i).getTimeStamp()) + "\ Địa điểm:" + GetUTF8FromNCRDecimalString(arrValue.get(i) .getAddress()) + "\ Trạng thái: " + GetUTF8FromNCRDecimalString(statusDescription);}
View more random threads:
- kiểm tra chuỗi nhập vào có số âm hay không?
- Bài tập Java cơ bản.
- Video hướng dẫn lập trình java căn bản
- Xin hướng dẫn cách trích rút nội dung trong HTML ....
- giải thích liên kết giữa các class
- Mong đc giúp đỡ
- Lỗi kết nối MySQL trong Java
- ai giúp đỡ em tạo dựng code cho bài này với, thực sự em không hiểu lắm
- Thắc mắc lập trình socket trong java
- Lỗi thao tác với cơ sở dữ liệu
-
07-10-2014, 01:27 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Bạn chỉ sai có 1 "tí" thôi.
Mã:// Các gia trị tạm:// Giá trị tạmlong lTemp = 0;// Lưu chỉ số tạm cho các phần tử được thêm.int c;long mileage[] = new long[1000];for (int i = 0; i < arrValue.size(); i++) { String statusDescription = StatusCode.getDescription(AccountID, arrValue.get(i).GetStatusCode(), privLabel, null); // Mỗi lần lặp thì tạo mới, tất cả phần tử sẽ là 0. 1000 phần tử vô nghĩa. // Mỗi lần lặp tạo đến 1000 phần tử, nếu lặp 100 lần thì sẽ thành 100 * 1000 = 100000. // Sau khi lặp xong, tức khoảng 8 * 100000 = 800000KB RAM (0.8MB) bị phung phí. // Lặp càng nhiều càng phung phí và có thể gây hét bộ nhớ (OutOfMemoryError). // long mileage[] = new long[1000]; // Sai // mileage[i] = Math.round(objrp.GetOdometer(AccountID, deviceID, (long)arrValue.get(i).getTimeStamp())); // if(mileage[i] == 0) // { // mileage[i] = mileage[i-1]; // } // Nếu muốn nó = 0 thì sẽ không thêm thì làm: lTemp = Math.round(objrp.GetOdometer(AccountID, deviceID, (long)arrValue.get(i).getTimeStamp())); if (lTemp != 0) { mileage[c++] = lTemp; } // Đoạn này cũng vô nghĩa. Có gán mà khong sử dụng, không in ra hay lưu vào đâu hết. String detail = "Mức nhiên liệu:" + Math.round(arrValue.get(i).GetFuelLevel()) + " l\ Q.Đường đi được trong ngày:" //+ Math.round(objrp.GetOdometer(AccountID, deviceID, (long)arrValue.get(i).getTimeStamp()))//here + mileage[c] + " km\ Thời gian: " + ConvertFromEpoch(arrValue.get(i).getTimeStamp()) + "\ Địa điểm:" + GetUTF8FromNCRDecimalString(arrValue.get(i) .getAddress()) + "\ Trạng thái: " + GetUTF8FromNCRDecimalString(statusDescription);}
-
07-10-2014, 02:47 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
nhưng bác ơi, mileage đã được khai báo đâu mà có đoạn
Mã:mileage[c++] = lTemp;
-
07-10-2014, 03:57 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Khai báo ở ngoài for. Mình quên, đã sửa.
Như vẫn chưa hiểu bạn làm gì nữa.
Tức là quãng đường đi được bằng 0 thì không có đoạn dài ngoằng (String detail...) ở dưới phải không? Vậy thì bỏ nó vào if.
-
07-10-2014, 04:50 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
mileage chỉ dùng 1 lần mà tạo ra mảng 1000 phần tử e là quá tốn tài nguyên. Bạn thử cách này xem sao
Mã:int mileage;for (int i = 0; i < arrValue.size(); i++) { String statusDescription = StatusCode.getDescription(AccountID, arrValue.get(i).GetStatusCode(), privLabel, null); if( i == 0) mileage = Math.round(objrp.GetOdometer(AccountID, deviceID, (long)arrValue.get(i).getTimeStamp())); else{ int temp = Math.round(objrp.GetOdometer(AccountID, deviceID, (long)arrValue.get(i).getTimeStamp())); if( temp != 0 ) mileage = temp; } String detail = "Mức nhiên liệu:" + Math.round(arrValue.get(i).GetFuelLevel()) + " l\ Q.Đường đi được trong ngày:" //+ Math.round(objrp.GetOdometer(AccountID, deviceID, (long)arrValue.get(i).getTimeStamp()))//here + mileage + " km\ Thời gian: " + ConvertFromEpoch(arrValue.get(i).getTimeStamp()) + "\ Địa điểm:" + GetUTF8FromNCRDecimalString(arrValue.get(i) .getAddress()) + "\ Trạng thái: " + GetUTF8FromNCRDecimalString(statusDescription);}
-
08-10-2014, 03:37 PM #6Silver member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi SITUVNX
- - - Nội dung đã được cập nhật ngày 08-10-2014 lúc 08:37 AM - - -
Gửi bởi conrongchautien
Thông qua phân tích dữ liệu Google từ 86 quốc gia, mới đây, một công ty tại Anh đã công bố bảng xếp hạng kích tấc "cậu nhỏ" của các nước trên thế giới. Kết quả, hầu hết các nước xếp ở nhóm đầu của...
"Chim" của chàng trai Việt thuộc...