【问题描述】写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串。(多组同时输入)
【输入形式】输入一个十六进制的数值字符串。
【输出形式】输出该数值的十进制字符串。
【样例输入】0xA
【样例输出】10
总体思路: 遍历给出的16进制数,若遍历处字符为‘0’或‘x’直接跳过无需care。构造一个将十六进制字符型的数转为十进制整型的数的函数Change用来处理十六进制数中“A~F”的情况。最后利用Math中的pow函数求得结果。
代码如下:
package week3.demo;
import java.util.Scanner;
public class Hwork6 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String input = sc.next();
String output = "";
int sum = 0;
for(int i = 0; i < input.length(); i++){
char in = input.charAt(i);
if(in == '0') continue;
else if(in == 'x') continue;
else{
int temp = Change(in);
sum += temp * Math.pow(16 , input.length() - i - 1);
}
}
output = String.valueOf(sum);
System.out.println(output);
}
public static int Change(char in){
int ans = 0;
if(in == 'A') ans = 10;
else if(in == 'B') ans = 11;
else if(in == 'C') ans = 12;
else if(in == 'D') ans = 13;
else if(in == 'E') ans = 14;
else if(in == 'F') ans = 15;
else ans = (int)in - 48;
return ans;
}
}
|