• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

wchenfeng

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

(回文整数)利用数组进行逆反数判断回文,不使用数组进行判断回文。

前情提要

编写方法:

// Return the reveral of an integer ,e.g.,reverse(456) return 654

public static int reverse(int number)

// Return true if number is a palindrome

public static boolean isPalindrome(int number)

使用reverse方法实现isPalindrome。如果一个数字的逆序数和它自身相等,这个数就称作回文输。编写一个测试程序,提示用户输入一个整数值,然后报告这个整数是否是回文数。

方法一

利用数组存储数据,然后进行逆反数储存。

最后通过比较逆反数与原本数,进行判断是否回文。

import java.lang.*;
import java.util.Scanner;
public class s1_1 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner reader=new Scanner(System.in);
        int n;
        System.out.println("请输入你要判断的正整数");
        n=reader.nextInt();
        System.out.println("这个正整数是否回文数:"+isPalindrome(n));
    }
    public static int reverse(int number)//进行逆反数输出
    {

        int i=0,j,b=0,n=number,last=0;
        //判断正整数有几位
        while(n!=0)//3223 322 32
        {
            n=n/10;//322 32 3 0
            i++;//1 2 3 4
        }
        //对数组进行申请相关位数空间
        int [] a=new int[i+1];
        i=0;//n 3223
        //重置n
        n=number;
        //进行存储逆反数
        while(n!=0)
        {
            a[i]=n%10;//3 2 2 3
            n=n/10;//322 32 3 0
            i++;//1 2 3 4
        }//i 4
        //i在后期要成为每位数的10的i次方,故减一
        i--;//3
        //记载正整数的位数,控制后期的j
        last=i;
        //进行逆反数输出
        for(j=0;j<=last;j++,i--)
        {
            b+=a[j]*(int)Math.pow(10, i);//0+3*1000+2*100+2*10+3*1
        }
        return b;
    }
    public static boolean isPalindrome(int number)//进行判断是否回文
    {
        return number==reverse(number);
    }
}

输入

3223

输出

方法二

import java.lang.*;
import java.util.Scanner;
public class s1_1 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner reader=new Scanner(System.in);
        int n;
        System.out.println("请输入你要判断的正整数");
        n=reader.nextInt();
        System.out.println("这个正整数是否回文数:"+isPalindrome(n));
    }
    public static int reverse(int number)//进行逆反数输出
    {

        int result=0;
        while(number!=0) {
            result = result * 10 + number % 10;//取最后一位,然后最后一位*10
            number = number / 10;//去除最后一位
        }
        return result;
    }
    public static boolean isPalindrome(int number)//进行判断是否回文
    {
        return number==reverse(number);
    }
}

输出

输入

3223

题目来源

Java语言程序设计与数据结构(基础篇),也就是Java的黑皮书。

posted on 2022-04-12 20:02  王陈锋  阅读(59)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3