蓝桥网试题——十进制转十六进制

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_40688217/article/details/88649613

本题目来自 http://lx.lanqiao.cn/problem.page?gpid=T49

问题描述
  十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F共16个符号,分别表示十进制数的0至15。十六进制的计数方法是满16进1,所以十进制数16在十六进制中是10,而十进制的17在十六进制中是11,以此类推,十进制的30在十六进制中是1E。
  给出一个非负整数,将它表示成十六进制的形式。
输入格式
  输入包含一个非负整数a,表示要转换的数。0<=a<=2147483647
输出格式
  输出这个整数的16进制表示
样例输入
30
样例输出
1E

本文提供以下两种方法:

方法一:用除商取余法
用十进制数除以16 记录下商和余数
然后继续用商去除以16记录下商和余数,直到商为0
最后将余数逆序排列就可以了

代码:

import java.util.Scanner;

public class ten_sixteen {

	public static void main(String[] args) {
		
		 Scanner sc=new Scanner(System.in);
		        int n=sc.nextInt();
		        
	        String s="";
		        char c=' ';
		        if(n==0) {
		            s="0";
		        }
		        int m;
		        while(n!=0) {
		            m=n%16;
		            if(m/10==1)
		                c=(char)(65+(m%10));   //利用ASCII码
		            else if(m/10==0)
		                c=(char)(48+m);         、、
		            s=c+s;                           //逆序输出
		            n=n/16;                         //不断除16 直到n!=0
		        }
		        System.out.println(s);

}
}

方法二:可以直接使用Integer类中的toHexString()方法来实现。

代码:

import java.util.Scanner;

public class ten_sixteen {
public static void main(String[] args) {

	
	 Scanner sc=new Scanner(System.in);
	        int n=sc.nextInt();
	        System.out.println(Integer.toHexString(n).toUpperCase()); 
  //注意:这里要加上.toUpperCase()方法,因为题中输出的字母是大写;
  想要大写转换为小写用.toLowerCase()方法,这里用不到此转换为小写的方法

}
}

最后,大家如果想看Math类的常用方法可以去这篇博客

猜你喜欢

转载自blog.csdn.net/weixin_40688217/article/details/88649613