JAVA_判断和循环(1)

回文数

question

输入一个整数,如果该数是一个回文整数,打印“true”,否则,返回false。

概念解释:回文数是指正序(从左到右)和倒序(从右到左)读都是一样的数。

例如:121是回文,而123不是。

输出样例:

看到题目,必然少不了分析的一步:

“输入一个整数”:第一步,Scanner类的三步走

“如果该数是一个回文整数”:有if,而且还要判断是不是回文数

最后根据是不是回文数,打印相应语句。

看到这,代码构成的框架应该有了:输入数—— if语句判断回文数——语句输出

没错,这个如何判断回文数就是我们的核心代码。

正过来是它,反过来还是它。


/ 和 % 的妙用

怎么反?
 

我们举个数:123,

123 / 10 = 12,本来还有个小数的,但是它是整型,只能无奈地舍弃了小数。

123% 10 = 3,欸?!%竟然可以只要小数(余数),不要前面的整数。

你是否悟到了什么?

我们要拆、又要反过来,/ 恰好可以分离最后一位,%又可以拿到最后一位。

把每次得到的数都加在上一个数的最后,不就实现了”反“。

12 % 10 = 2拿到2了,该拿1了

12 / 10 = 1;

1 % 10 = 1;

...

小总结:拆和反同时出现,循环+ / +%

代码实现:


核心代码

  x = num % 10;//拿到最后一位
  num /= 10;//,去掉末位,让前一位变成最后一位,方便下次继续拿
  comp = comp * 10 + x;// 上一次的最后一位已经乘10进一位,把自己原来的位置让给新来的

num是我们输入的数,comp最后是反过来的数。简单相加是不能做到反过来的。

既然,有下次就会有下下次,次次无穷尽也————不知道循环次数,使用while  

笔锋一转,停止条件是什么?我拿完了所有的数呗,num已经被我榨干了!

 
while(num != 0)
        {
            x = num % 10;
            num /= 10;
            comp = comp * 10 + x;

        }

if比较并输出:

既然num一直在被我们榨干,它是一个变量,最后再也不是当初的模样。

comp这个反过来的数和谁比呢?我们不妨在创建一个变量,在num没进入循环前,让这个变量记住它的模样。

int temp = num;

比较代码我们这里不再详说:

if(comp == temp)
   System.out.println("true");    
else
   System.out.println("false");
          

完整代码参考:
 

package www.tot.demo;
import java.util.Scanner;
public class Main {
    //回文数
    //回文数顾名思义:左边读是这个数,右边读也是这个数
    //核心思路:拿到数的每一位然后再相接
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);//输入一个数
        int num = sc.nextInt();
        int temp = num;
        int x = 0;
        int comp = 0;
        while(num != 0)
        {
            x = num % 10;
            num /= 10;
            comp = comp * 10 + x;

        }
          if(comp == temp)
              System.out.println("true");
          else
              System.out.println("false");
    }

}

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值