16进制转10进制(不用函数,自己思路写的)
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* <p>功能描述:16进制转10进制</p>
* @author waiwai
* @version 1.0 2018-11-28 下午3:02:11
*/
public class Num16Z10{
public static void main(String[] args) {
Scanner sr = new Scanner(System.in);
System.out.println("请输入16位进制数:");
String num16 = sr.next();
String str = new StringBuffer(num16).reverse().toString();
char[] a = str.toCharArray();
char[] b = {'a','b','c','d','e','f','A','B','C','D','E','F'};
int result = 0;
int count = 0;
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < b.length; j++) {
if(a[i] == b[j]){
int max = szh(a[i]);
result += max * (int) Math.pow(16,count);
count ++;
break;
}
if(isNum(a[i]+"")){
int sdf = a[i] - '0';
result += sdf * (int) Math.pow(16,count);
count ++;
break;
}
}
}
System.out.println("转换成十进制是:" + result);
}
/**
* @方法描述:匹配字符
* @author waiwai
*/
public static int szh(char a){
int b = 0;
switch (a) {
case 'A':
return b = 10;
case 'a':
return b = 10;
case 'B':
return b = 11;
case 'b':
return b = 11;
case 'C':
return b = 12;
case 'c':
return b = 12;
case 'D':
return b = 13;
case 'd':
return b = 13;
case 'E':
return b = 14;
case 'e':
return b = 14;
case 'F':
return b = 15;
case 'f':
return b = 15;
default:
System.out.println("请输入合法的16位进制数字!");
break;
}
return b;
}
/**
* @方法描述:调用正则表达式
* @param regex
* @param str
* @return
* @author waiwai
*/
public static boolean match(String regex, String str) {
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
return matcher.matches();
}
/**
* @方法描述:判断是否为数字
* @param code
* @return
* @author waiwai
*/
public static boolean isNum(String code) {
return match("^[0-9]*$", code);
}
}
java菜鸟,按照自己的思路写着玩玩–!