問題描述
十六進制數是在程序設計時經常要使用到的一種整數的表示方式。它有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
藍橋杯題目。
如果是調用封裝好的方法:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long number = sc.nextLong();
String arry = Long.toHexString(number);//十進制轉十六進制
arry = arry.toUpperCase();
System.out.println(arry);
}
}
如果自己實現的話,通過建立StringBuilder對象 和append()方法,連接每位16進制數,其中獲取到的16進制字符串為逆序的16進制字符串,需要進行逆序操作,最終轉換為16進制字符串:
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
long number = sc.nextLong();
int remainder = 0;
int len;
StringBuilder st = new StringBuilder();
do{
remainder = (int) (number % 16);
number = number / 16;
switch (remainder) {
case 10:
st.append("A");
break;
case 11:
st.append("B");
break;
case 12:
st.append("C");
break;
case 13:
st.append("D");
break;
case 14:
st.append("E");
break;
case 15:
st.append("F");
break;
default:
st.append(remainder);
break;
}
}while(number >= 1);
len = st.toString().length();
char [] arry = st.toString().toCharArray();
st = new StringBuilder();
for(int i = len - 1; i >= 0; i--){
st.append(arry[i]);
}
System.out.println(st);
}
}