藍橋杯——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 str = scanner.nextLine();
long dec = Long.parseLong(str, 16);// 將十六進制的變成十進制的
System.out.println(dec);
}
}
方法二
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String string = scanner.nextLine();
char c[]=string.toCharArray(); ? ?//將字符串對象中的字符轉換為一個字符數組
//int sum = 0;
long sum = 0; ? ?//數據范圍上,不超過8位的十六進制數,所以計算總和的sum應該聲明為long型,而不是int型,否則會出錯。
int n = c.length;
for (int i = 0; i < n; 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小時內刪除侵權內容。