Java——任意進位制轉換為十進位制
阿新 • • 發佈:2018-12-16
1. 方法一(呼叫系統方法)
package demo; import java.util.Scanner; /** * 任意進位制轉換為 十 進位制 * @author 時光·漫步 * */ public class Test{ public static void main( String args[]) { System.out.print("請輸入待轉換數的進位制:"); Scanner scanner = new Scanner( System.in); int jinzhi = scanner.nextInt(); System.out.print("請輸入待轉換的數字:"); String str = scanner.next(); int num = Integer.valueOf(str,jinzhi); System.out.println(num); } }
2. 方法二(自定義方法)
package com.zth; import java.util.Scanner; /** * 任意進位制轉換為 十 進位制 * @author 時光·漫步 * */ public class JinZhi{ public static void main( String args[]) { Scanner scanner = new Scanner( System.in); System.out.print("請輸入待轉換數的進位制:"); int jinzhi = scanner.nextInt(); System.out.print("請輸入待轉換的數:"); String str = scanner.next(); scanner.close(); int d; // 儲存取出的最低位 int p = 0; // 儲存當前位權,從個位開始 int sub = 0; // 儲存當前數值 char c; int length = str.length(); for(int i= 0; i<length;i++) { c = str.charAt(i); // 將字元轉換為對應的數字 if(c>='A' && c<= 'Z') { d = c - 55; }else if(c>='a' && c<= 'z') { d = c - 87; }else { d = c - 48; } // 當前位權 p = length - 1-i; // 0^0 = 1 if(d != 0) { sub += d*(int)Math.pow(jinzhi,p); } // System.out.println("當前位權:"+p+"當前數值:"+d); } System.out.println(jinzhi + " 進位制的 "+ str +" 為:"+sub); } }