【JAVA蓝桥杯】基础练习1 十进制转十六进制

资源限制
时间限制:1.0s   内存限制:512.0MB
问题描述
  十六进制数是在程序设计时经常要使用到的一种整数的表示方式。它有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
JAVA标准代码如下所示
// 十进制转十六进制  
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        int n=new Scanner(System.in).nextInt();
        char[] arr=new char[20];
        int i=0;
        char[] date={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
        if (n==0) {
            System.out.println(n);
        }
        while(n>0){
            arr[i]=date[n%16];
            n=n/16;
            i++;
        }
        String string=new String(arr).trim();
        String str=new StringBuffer(string).reverse().toString();//reverse字符串反转函数
        System.out.println(str);
    }    
}

1.上面的代码中int n=new Scanner(System.in).nextInt();与Scanner in=new Scanner(System.in); int n=int.nextInt();是等价的,不同的地方在于如果你要多数据输入的话都是采用第二种方法,第一种方法只能单个值输入,单个内存值比后者要大。

2.String string=new String(arr).trim();的意思是去掉字符串中多余的空格。当然,它也是可以分开的(string.trim();)。

3.本题的重中之重来了!!!看下面的代码我们把它拆分

StringBuffer sb = new StringBuffer("abc"); 
sb.reverse();
sb.toString();

这里的StringBuffer的作用是对象初始化,我们输入abc这样初始化出的StringBuffer对象的内容就是字符串”abc”。后面的reverse();的含义就是把字符串对调。输入abc出来则为cba,充分考虑到了进制余数从下往上数的方法;sb.toString()就是返回该stringbuffer的字符串形式。值得注意的是, 若希望将StringBuffer在屏幕上显示出来, 则必须首先调用toString方法把它变成字符串常量, 因为PrintStream的方法println()不接受StringBuffer类型的参数

原文地址:https://www.cnblogs.com/chenxi1944362410/p/12275537.html