藍橋杯 基礎練習 十進制轉十六進制

如果採用Java自帶的toHexString()還是相當簡單的。

我不使用toHexString方法。

import java.util.Scanner;


public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		int j;
		String hex = "";
		do{
			j = num % 16;
			switch(j){
				case 10: hex ="A"+hex;break; 
				case 11: hex ="B"+hex;break; 
				case 12: hex ="C"+hex;break; 
				case 13: hex ="D"+hex;break; 
				case 14: hex ="E"+hex;break; 
				case 15: hex ="F"+hex;break; 
				default: hex = j +hex; 
			}
			num = num / 16;
			
		}while(num != 0);
		System.out.print(hex);
	}
	
}

switch中應該採用 hex = "A"+hex;不能使用 hex +="A";這樣會導致得到反轉的結果。

因爲 num % 16 取的是低位的值,num / 16 也是將低位去除。所以每次循環的得到的結果其實都是上一次的高位,因此,每次得到的結果應該放在原來基礎的左邊,作爲高位。

hex += "A"  ====> hex = hex + "A"

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章