A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© maxwell247 中级黑马   /  2015-9-26 20:40  /  245 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文



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


/*
        题目:一个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();
        }
}


4 个回复

倒序浏览
将数字转化为字符串,通过length方法判断位数,反转字符串与原字符串比较,equals方法

点评

反转字符串...哦,谢谢提醒。我想得太麻烦了。  发表于 2015-9-27 09:11
回复 使用道具 举报
转换成int数组意义何在。。。

点评

确实没必要。做了无用功....  发表于 2015-9-27 09:10
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马