Java版大厂算法题1——数字颠倒

问题描述

      输入一个整数,将这个整数以字符串的形式逆序输出,程序不考虑负数的情况,若数字含有0,则逆序形式也含有0。如果输入为100,则输出为001。
数据范围:0<=n<=(2^30)-1  
* 输入描述:输入一个int整数  
* 输出描述:将这个整数以字符串的形式逆序输出

代码演示

import java.io.*;

/**
 * ClassName:HJ11
 * Description:数字颠倒
 * 输入一个整数,将这个整数以字符串的形式逆序输出,程序不考虑负数的情况,若数字含有0,则逆序形式也含有0
 * 如果输入为100,则输出为001
 *
 * 数据范围:0<=n<=(2^30)-1
 * 输入描述:输入一个int整数
 * 输出描述:将这个整数以字符串的形式逆序输出
 *
 * 初始想法:先把整数转换为字符串,然后对这个字符串进行颠倒
 *
 * @Create:2024/1/25 13:59
 * @Version 1.0
 */

public class HJ11 {
    public static void main(String[] args) throws IOException {
        //采用BufferedReader这个类,用于从字符串输入流中读取文本
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        //初始化一个空字符串,用以存储输入内容
        String str = "";
        //尝试从标准输入读取一行文本,如果发生异常,我们就捕获
        try{
            str = br.readLine();
        } catch(Exception e){

        }
        //用一个变量存储当前数字
        int a = 0;
        //把字符串解析成整数
        int num = Integer.parseInt(str);
        //用do-while循环来处理倒序
        do{
            //提取num的最后一位数字
            a = num % 10;
            //不断从num中移除最后一位数字
            num = num / 10;
            System.out.print(String.valueOf(a));
        }
        while(num > 0);
    }
}


解题思路

       我喜欢先从数据类型思考,然后再从逻辑运算来设计代码,因为对于Java这种强类型的语言来说,我们还是最好能有一个思路清晰的数据类型处理过程,加之这道题也涉及到了int和string两种类型。

代码细节

抛异常

       在Java中抛出异常一种处理程序运行时间可能遇到的错误或异常情况的机制,而且,尤其在涉及输入输出的操作时,可能会遇到不可预见的错误,这样使用异常可以把正常的业务逻辑和错误处理分开,代码更加清晰和易于维护。IOException即主要处理I/O异常的方式。

关于BufferedReader

       BufferedReader是一个类,用于从字符输入流高校地读取文本,我们直接采用隐式的方式,传入到BufferedReader构造函数的参数,参数就是InputStreamReader的一个实例对象。

类型转换方法

       我们用parseInt()方法,用以把字符串类型的数据转换为int整型,当我们处理完运算逻辑后,再把int类型的a,用valueOf()方法,把a转换为字符串类型。

总结

       这道题教会我们如何在 Java 中处理字符串和基本的输入输出操作。首先,它展示了如何使用 `BufferedReader` 和 `InputStreamReader` 从标准输入读取数据,这是 Java 中常用的一种读取用户输入的方式。其次,通过将整数倒序输出,我们学习了基本的数字操作,如模运算(`%`)和整数除法(`/`),这对于理解数字在编程中的处理非常重要。此外,这个问题也涉及到循环控制结构(`do-while` 循环),它是编程中控制流的基本概念。最后,通过必须处理可能的 `IOException`,我们接触到了异常处理的基础,这是编写健壮、可靠程序的关键部分。总的来说,这个问题提供了一个很好的练习机会,涵盖了多个基础但重要的编程概念。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值