01/10/2018, 16:01

In ra cách phân tích tổng các chữ số của 1 số nguyên như thế nào?

Viết chương trình tính tổng các chữ số của một số nguyên n. (Ví dụ: 1234 = 10). Sau đó phân tích ra tổng số đó và in ra kết quả tổng số đó. Ví dụ: 1234 = 1 + 2 + 3 + 4 = 10

    private static Scanner sc;
    private static int n;

    public static void main(String[] args) {
        nhap();
        xuat();
    }

    private static void nhap() {
        sc = new Scanner(System.in);
        System.out.println("Nhap so: ");
        n = sc.nextInt();
    }
    private static void xuat() {
        System.out.println("Tong chu so ban vua nhap: ");
        System.out.print(n + " = " + tongSoNguyen(n) + " ");
    }

    private static int tongSoNguyen(int n) {
        int sum = 0;
        int x = 10;
        do {
            sum += n % x;
            n = n / x;
        } while (n > 0);
        return sum;
    }
}

Mình in ra được tổng số rồi : 1234 = 10, còn phân tích tổng số đó thì làm thế nào các bạn nhỉ?

HK boy viết 18:09 ngày 01/10/2018

int x = 10;
do {
sum += n % x;
n = n / x;
} while (n > 0);

In ra n % x là được.

P/s: không cần đặt biến x = 10 đâu, khá thừa.

locdt viết 18:05 ngày 01/10/2018

Để phương thức tongSoNguyen vừa tính tổng, vừa in ra kết quả sẽ tốt hơn tại không thể tách đc 2 việc tính tổng với in phép tính. Tạo một biến sum để lưu giá trị tổng, biến str lưu chuỗi phép tính.

Nếu lấy phần dư thì sẽ lấy dần từ hàng đơn vị -> chục -> trăm -> … mà phép tính phải in ngược lại => mỗi hàng lấy ra lưu vào viến chuSo. Hàng đơn vị đầu tiên lưu luôn vào str, các hàng sau thì chuSo + " + " + str, ví dụ 4 => 3 + 4 => 2 + 3 + 4 => 1 + 2 + 3 + 4,…

private static String tongSoNguyen(int n) {
    String str;
    int sum = 0;
    do {
        int chuSo = n % 10;
        sum += chuSo;
        n /= 10;

        if (str.equals(""))
            str = String.valueOf(chuSo);
        else
            str = chuSo + " + " + str;
    } while (n > 0);

    return str + " = " + sum;
}
Nguyễn Trường Bình viết 18:10 ngày 01/10/2018

Cám ơn các bạn đã phản hồi và chỉ mình rõ cái đang thắc mắc!

Bài liên quan
0