18/03/2021, 09:40

Bài tập Java - Tìm số thuận nghịch trong java

Bài tập Java - Tính tổng của các chữ số của môt số nguyên n trong Java Nội dung chính Bài tập Java - Tìm số thuận nghịch trong java Lời giải Bài tập Java - Tìm số thuận nghịch trong java Đề bài : Viết chương trình tìm các số thuận nghịch có sáu chữ số ...

Bài tập Java - Tính tổng của các chữ số của môt số nguyên n trong Java

Nội dung chính

  • Bài tập Java - Tìm số thuận nghịch trong java
  • Lời giải

Bài tập Java - Tìm số thuận nghịch trong java

Đề bài: Viết chương trình tìm các số thuận nghịch có sáu chữ số từ 100000 đến 999999. Một số được gọi là số thuận nghịch nếu nó bằng số đảo ngược, tức là ta đọc từ trái sang phải hay từ phải sang trái số đó ta vẫn nhận được một số giống nhau. Ví dụ 123321 là một số thuận nghịch.

Tính tổng của các chữ số của môt số nguyên n trong java

Lời giải

Cách 1: Duyệt các số từ 100000 đến 999999, rồi phân tách số hiện tại thành các chữ số đơn lẻ để kiểm tra tính thuận nghịch.

File: BaiTap11.java


package vn.viettuts.baitap;

import java.util.ArrayList;
import java.util.List;

/**
 * Chương trình liệt kê tất cả các số thuận nghịch có 6 chữa số.
 * 
 * @author viettuts.vn
 */
public class BaiTap11 {
    public static int DEC_10 = 10;
    
    /**
     * main
     * 
     * @param args
     */
    public static void main(String[] args) {
        int count = 0;
        // in ra màn hình các số thuận nghịch có 6 chữ số
        for (int i = 100000; i < 1000000; i++) {
            if (isThuanNghich(i)) {
                System.out.println(i);
                count++;
            }
        }
        System.out.println("Tổng các số thuận nghịch có 6 chữ số: " 
                + count);
    }
    
    
    /**
     * Kiểm tra số thuận nghịch
     * 
     * @param n: số nguyên dương
     * @return true là số thuận nghịch
     *         false không là số thuận nghịch
     */
    public static boolean isThuanNghich(int n) {
        List<Integer> listNumbers = new ArrayList<>();
        // phân tích số n thành các chữ số và lưu vào listNumbers
        do {
            listNumbers.add(n % DEC_10);
            n = n / DEC_10;
        } while (n > 0);
        // kiểm tra tính thuận nghịch
        int size = listNumbers.size();
        for (int i = 0; i < (size/2); i++) {
            if (listNumbers.get(i) != listNumbers.get(size - i - 1)) {
                return false;
            }
        }
        return true;
    }
}

Kết quả:

100001
101101
102201
...
997799
998899
999999
Tổng các số thuận nghịch có 6 chữ số: 900

Cách 2: sử dụng thuật toán + StringBuilder trong java


/**
 * Chương trình liệt kê tất cả các số thuận nghịch có 6 chữa số.
 * 
 * @author viettuts.vn
 */
package vn.viettuts.baitap;

public class BaiTap11_2 {
    public static final int[] DEC_ARR_1_9 = {1, 2, 3, 4, 5, 6, 7, 8, 9};
    public static final int[] DEC_ARR_10 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    
    /**
     * main
     * 
     * @param args
     */
    public static void main(String[] args) {
        int count = 0;
        StringBuilder sb;
        // in ra màn hình các số thuận nghịch có 6 chữ số
        for (int a : DEC_ARR_1_9) {
            for (int b : DEC_ARR_10) {
                for (int c : DEC_ARR_10) {
                    sb = new StringBuilder();
                    sb.append(a).append(b).append(c).append(c).append(b).append(a);
                    System.out.println(sb.toString());
                    count++;
                }
            }
        }
        System.out.println("Tổng các số thuận nghịch có 6 chữ số: " 
                + count);
    }
}

Kết quả:

100001
101101
102201
...
997799
998899
999999
Tổng các số thuận nghịch có 6 chữ số: 900

Cách 3: Chuyển đổi n thành chuỗi String rồi kiểm tra tính thuận nghịch.


package vn.viettuts.baitap;

/**
 * Chương trình liệt kê tất cả các số thuận nghịch có 6 chữa số.
 * 
 * @author viettuts.vn
 */
public class BaiTap11_3 {
    
    /**
     * main
     * 
     * @param args
     */
    public static void main(String[] args) {
        int count = 0;
        // in ra màn hình các số thuận nghịch có 6 chữ số
        for (int i = 100000; i < 1000000; i++) {
            if (isThuanNghich(i)) {
                System.out.println(i);
                count++;
            }
        }
        System.out.println("Tổng các số thuận nghịch có 6 chữ số: " 
                + count);
    }
    
    
    /**
     * Kiểm tra số thuận nghịch
     * 
     * @param n: số nguyên dương
     * @return true là số thuận nghịch
     *         false không là số thuận nghịch
     */
    public static boolean isThuanNghich(int n) {
        // chuyển đổi số n thành một chuỗi String
        String numberStr = String.valueOf(n);
        // kiểm tra tính thuận nghịch
        int size = numberStr.length();
        for (int i = 0; i < (size/2); i++) {
            if (numberStr.charAt(i) != numberStr.charAt(size - i - 1)) {
                return false;
            }
        }
        return true;
    }
}

Kết quả:

100001
101101
102201
...
997799
998899
999999
Tổng các số thuận nghịch có 6 chữ số: 900
Bài tập Java - Tính tổng của các chữ số của môt số nguyên n trong Java
0