题解HJ5 | #进制转换#

进制转换

https://www.nowcoder.com/practice/8f3df50d2b9043208c5eed283d1d4da6

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String a=in.nextLine();
        if(a.charAt(0)=='0'&&a.charAt(1)=='x'){
            int sum=0;
            for(int i=2;i<a.length();i++){
                if(a.charAt(i)<='9'&&a.charAt(i)>='0')
                sum=sum*16+a.charAt(i)-'0';
                else if(a.charAt(i)<='F'&&a.charAt(i)>='A')
                sum=sum*16+a.charAt(i)-'A'+10;
                else System.out.println("error");
            }
        System.out.println(sum);
        }else System.out.println("error");
    }
}

这题也很简单,16进制转化为10进制,给的是字符串类型,先定义字符串

String a=in.nextLine();

然后把16进制的字符从首位挨个*16累加就行了,十六进制数末位有A-F,遇到了直接减去字符A,俩个字符相减是ascll码相减,再+10即可得到16进制数大小

//题目里给的输出都不会有问题,但是实际情况要考虑错误输入

if(a.charAt(0)=='0'&&a.charAt(1)=='x'){//判定给的是不是16进制数

int sum=0 ; //来一个计数的

for(int i=2;i<a.length();i++){ //开始0,1俩个数是0x,所以从2开始,

if(a.charAt(i)<='9'&&a.charAt(i)>='0')

sum=sum*16+a.charAt(i)-'0';

else if(a.charAt(i)<='F'&&a.charAt(i)>='A')

sum=sum*16+a.charAt(i)-'A'+10;

else System.out.println("error");

}

System.out.println(sum);

//最后输出的自然是10进制,如果反过来输出其他进制,就要这个数除以进制数来计算,

//比如460,就是324/16=20......4,4就是末位,然后20>16?,20/16=1....4,倒数第二位就是4,1>16?否,最后输出0x144

//然后把10-15依次对应上A-F

}else System.out.println("error");

#华为OD题库#
华为OD笔试库讲解,JAVA版 文章被收录于专栏

随便发发而已

全部评论

相关推荐

01-23 14:54
同济大学 Java
热爱敲代码的程序媛:给你提几点【专业技能】这个模块里面可优化的地方:1.【具备JVM调优经验】可以去b站上搜一下JVM调优的视频,估计一两个小时凭你的学习能力就能掌握JVM调优的实践方面的技能。2.【MySql优化】MySql这一栏,你去b站或者找个博客看看MySql优化,学一下,如果你本身比较熟悉MySql语句的话,那基本半天时间凭你的学习能力MySql语句优化方面的技能你也能掌握个差不多。以上1,2两点主要是因为我看你专业技能大部分都说的是偏理论,没有写应用。再就是最后,你结合你的项目,想一想你的项目中哪些sql语句是可以用MySql优化的,到时候你面试的时候也好结合着说一下。
点赞 评论 收藏
分享
Aaso:挺好的,早挂早超生
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务