藍橋杯——BASIC-11.十六進制轉十進制
試題 基礎練習 十六進制轉十進制

資源限制
時間限制:1.0s ? 內存限制:512.0MB
問題描述
從鍵盤輸入一個不超過8位的正的十六進制數字符串,將它轉換為正的十進制數后輸出。
注:十六進制數中的10~15分別用大寫的英文字母A、B、C、D、E、F表示。
樣例輸入
FFFF
樣例輸出
65535
注:十六進制轉換成十進制的基本原理是按數位依次操作,將每一位依次展開乘以權值再求和。
解題思路:
import?java.util.Scanner;
public?class?Main?{
public?static?void?main(String[]?args)?{
Scanner scanner = new Scanner(System.in);
String?string?=?scanner.nextLine();
char c[]=string.toCharArray();????//將字符串對象中的字符轉換為一個字符數組。
long?sum?=?0; //數據范圍上,不超過8位的十六進制數,所以計算總和的sum應該聲明為long型,而不是int型,否則會出錯。
int?n?=?c.length;
for?(int?i?=?0;?i?
if((int)c[i]-48>9){
if(c[i]=='A')
sum+=10*Math.pow(16,n-i-1);
else?if(c[i]=='B')
sum+=11*Math.pow(16,n-i-1);
else?if(c[i]=='C')
sum+=12*Math.pow(16,n-i-1);
else?if(c[i]=='D')
sum+=13*Math.pow(16,n-i-1);
else?if(c[i]=='E')
sum+=14*Math.pow(16,n-i-1);
else?if(c[i]=='F')
sum+=15*Math.pow(16,n-i-1);
}
else{
sum+=((int)c[i]-48)*Math.pow(16,n-i-1);
}
}
System.out.println(sum);
}
}
希望對大家有所幫助!
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。