//二,八,十六,進制轉為十進制(字符串知識點方法)
public class PracticeDemo {
public static void BOHextoD(int n,String string)
{
int sum = 0;
System.out.println("輸出"+n+"進制數如下:");
for(int i = 0;i < string.length();i++)
{
int num = 0;//num用于記錄每一位上面的數字
//1.charAt()為提取字符串的特定字符 2.強制把char類型住轉化為的int類型
int m = string.charAt(i);
if(n > 8)//提取十六進制各位上面的數字
{
num = m >= 'A'? m-'A'+10 : m-'0';//'A' = 65
}
else
{
num = m >= '0' ? m - '0' : null;//'1'= 49
}
sum += (int) Math.pow(n, string.length()-1-i)*num;
//權值乘以所在位上面的數字
}
System.out.println(sum+" ");
}
public static void main(String[] args) {
Scanner in = new Scanner (System.in);
System.out.println("輸入你要轉的字符串");
String s = in.nextLine();
int a = 2;//a=8,a=16 a為什么數字就是幾進制轉換
BOHextoD(a,s);
}
}
//二,八進制轉十進制(數學知識點方法)
public class PracticeDemo {
public static void BOtoD(int n,String string) {
int[] arr = new int[string.length()];//將字符串數組轉換為一個整型數組
for(int i = 0;i < string.length();i++)
{ // 用for循環解析子串。 parseInt()把字符串解析并且返回一個整型
arr[i] = Integer.parseInt(string.substring(i,i+1));
}
int num = 0; //用于提取各位上面的數字
int sum = 0;
//查表法 :權值
int[] c = new int[20];
for(int i = 0;i < 20;i++)
{
c[i] = (int) Math.pow(n, i);
}
//轉為十進制
for(int i = 0;i < arr.length;i++)
{
if(n > 2) //八進制轉換
{
for(int j = 0;j < 8;j++)
{
if(arr[i] == j)
{
num = c[arr.length-1-i]*j ;//權值乘以數字
}
}
sum += num ;
}
else
{
if(arr[i] == 1)
{
num = c[arr.length-i-1];
}
else
{
num = 0;
}
sum += num ;
}
}
System.out.println(sum+"");
}
public static void main(String[] args) {
Scanner in = new Scanner (System.in);
System.out.println("輸入二進制數:");
String s = in.nextLine();
BOtoD(2,s);
// System.out.println("輸入八進制數:");
//String s = in.nextLine();
// BOtoD(8,s);
}
}