01/10/2018, 12:04

Tách chuỗi trong java

Nhờ mọi người giúp em với ạ.
Đề bài là:
cho một biến a lưu số tiền.và yêu cầu là in ra số tiền đó được ngăn cách bới dấu chấm a.!
input: a =10000000;
output: b = 10.000.000;

public class Miana {

public static void main(String[] args) {
    int a = 10000;
    String str1 = "", str2 = "";
    String str4 = "";
    String str = Integer.toString(a);
    int leng = str.length();
    for (int i = leng - 3; i >= 0; i--) {
        str2 = str.substring(i, i + 3);

        str1 = str1 + str2;
        if(str1.length()==3){
            str4 = "."+str1;
        }

    }
    System.out.println(str4);
}

}

HK boy viết 14:19 ngày 01/10/2018

Code bạn sai ở đâu? Bạn có thể chỉ rõ được không?

Tran trong thang viết 14:10 ngày 01/10/2018

như trên thì nó chỉ in ra " .000 " thôi ạ

Tran trong thang viết 14:05 ngày 01/10/2018

em nghĩ là cái đoạn này có vấn đề ạ
if(str1.length()==3){
str4 = “.”+str1;
}

HK boy viết 14:17 ngày 01/10/2018

Cả thuật toán của bạn có vấn đề luôn.

a = "10000000". Ban đầu i = 5, bạn lấy ra đoạn [5, 7], lúc sau i giảm thành i = 4, bạn lại lấy ra đoạn [4, 6], đoạn này trùng với đoạn đã xét.

Bạn xem lại code xem có cần tự sửa gì không. Cẩn thận cộng thiếu chữ số.

Tran trong thang viết 14:07 ngày 01/10/2018

nhờ bạn sửa cho mình với được không ạ :))

HK boy viết 14:05 ngày 01/10/2018

Bạn đã đọc lại code và tự suy nghĩ chưa?

Tran trong thang viết 14:07 ngày 01/10/2018

vậy ý của bạn là cắt từng phần tử 1 á

Tran trong thang viết 14:08 ngày 01/10/2018

Bạn có thể giải giúp mình được không ạ

HK boy viết 14:13 ngày 01/10/2018

vậy ý của bạn là cắt từng phần tử 1 á

Ý mình là lấy 3 phần tử kề nhau. Ví dụ, bạn đang ở ô i = 4, bạn sẽ lấy được 3 phần tử a[4], a[5], a[6], sau đó bạn nhảy ngược về i = 1, lấy tiếp 3 phần tử a[1], a[2], a[3]. Cứ lấy 3 phần tử và lùi dần 3 bước như vậy.

Tran trong thang viết 14:13 ngày 01/10/2018

thanks bạn nhé. mình làm dc rồi :))

Hung Nguyen viết 14:16 ngày 01/10/2018

mình vừa làm phần này cho app mình hôm qua, bạn có thể tham khảo thuật toán của mình:

public static String getFormattedAmount(int amount) {
        String formatted_value = "";
        boolean isNavigate = amount < 0;
        amount = Math.abs(amount);
        while (amount > 999) {
            int du = amount % 1000;
            amount = amount / 1000;
            formatted_value = String.format(Locale.getDefault(), ".%,03d", du) + formatted_value;
        }
        if(isNavigate){
            formatted_value = String.format(Locale.getDefault(), "-%,d", amount) + formatted_value;
        } else {
            formatted_value = String.format(Locale.getDefault(), "%,d", amount) + formatted_value;
        }
        return String.format(Locale.getDefault(), "%sđ", formatted_value);
    }
Bài liên quan
0