藍橋杯試題:十六進位制轉10進位制
阿新 • • 發佈:2018-12-17
問題描述 從鍵盤輸入一個不超過8位的正的十六進位制數字符串,將它轉換為正的十進位制數後輸出。 注:十六進位制數中的10~15分別用大寫的英文字母A、B、C、D、E、F表示。 樣例輸入 FFFF 樣例輸出 65535
import java.util.Scanner; public class Main { public static void main(String[] arg){ Scanner scanner=new Scanner(System.in); String s=scanner.next(); int x=1;//記錄現在處理到十六進位制的第幾位; long sum=0;//記錄總的數值 int length=s.length(); while(length>0){ int value= s.charAt(length-1)-'0'; switch (s.charAt(length-1)){ case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': sum+=value*Math.pow(16,x-1); break; case 'A': sum+=10*Math.pow(16,x-1); break; case 'B': sum+=11*Math.pow(16,x-1); break; case 'C': sum+=12*Math.pow(16,x-1); break; case 'D': sum+=13*Math.pow(16,x-1); break; case 'E': sum+=14*Math.pow(16,x-1); break; case 'F': sum+=15*Math.pow(16,x-1); break; } x++; length--; } System.out.println(sum); } }
注意
最後結果要用long,因為最大是FFFFFFFF,int會造成溢位。