黑马程序员技术交流社区

标题: 练习十五:判断回文数 [打印本页]

作者: maxwell247    时间: 2015-9-26 20:40
标题: 练习十五:判断回文数


从网上找到一份编程练习题,我决定将里面的题目全都做一遍。


/*
        题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
*/

/*
        分析:和水仙花数一样,可以分解这个5位数。使用数组存放分解的数字
        在该程序中,我使用了循环分解数字。
        判断回文数的方法:将数组a[]的数字,逆序保存到数组b[]中。
        再将数组a[]和数组b[]中的内容转化为字符串,比较两个字符串是否相等,如果相等则为回文数,如果不想等则不是回文数。

        后记:程序写完了之后,发现这样的思路太复杂了。其实很简单,直接比较数组中内容即可。
*/

import java.util.Scanner;

class HuiWenShu {
        public static void main(String[] args) {
                System.out.println("请输入一个五位数,本程序将判断是否为回文数。");
                Scanner sc=new Scanner(System.in);
                int x=0;
                //检查输入数据的合法性,这里利用了continue和break的特点,实现循环检查。
                while(true){
                        x=sc.nextInt();
                        if (x<9999 || x>100000){
                                System.out.println("您输入的不是五位数!请重新输入一个五位数。");
                                continue;
                        }
                        break;
                }
                int[] a=new int[5];
                //拆分五位数,这里是个技巧,然而并不值得推荐
                for (int i=4; i>=0; i--){
                        a=(int)(x/(Math.pow(10,i)));
                        x=(int)(x%(Math.pow(10,i)));
                }
                //输出判断是否为回文数
                if(is_HuiWenShu(a)){
                        System.out.println("该数字是回文数");
                }else{
                        System.out.println("该数字不是回文数");
                }
        }

        /*
                思路:将a[]中的内容,逆序存储到b[]中,如果两个数组内容还相等,那么就肯定是回文数
        */
        public static boolean is_HuiWenShu(int[] a){
                int[] b=new int[a.length]; //定义数组,用于
                for (int i=0; i<a.length; i++){
                        b[b.length-1-i]=a;
                }
                String s1=arrayToString(a);
                String s2=arrayToString(b);
                if (s1!=null && s1.equals(s2)){
                        return true;
                }else{
                        return false;
                }
        }

        /*
                将int数组中内容转化为字符串
        */
        public static String arrayToString(int[] arr){
                StringBuffer sb=new StringBuffer();
                for (int i=0; i<arr.length; i++){
                        sb.append(arr);
                }
                return sb.toString();
        }
}



作者: wx_HWRW5aF7    时间: 2015-9-27 02:36
将数字转化为字符串,通过length方法判断位数,反转字符串与原字符串比较,equals方法
作者: Synaric    时间: 2015-9-27 07:41
转换成int数组意义何在。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2