1. 程式人生 > >獲取碼值(各種類型字符(中、英)的ASCII)和進制轉換系統(包括正負數、小數)

獲取碼值(各種類型字符(中、英)的ASCII)和進制轉換系統(包括正負數、小數)

獲取碼值 進制轉換 十進制小數負數轉二進制 java進制轉換 ASCII

獲取碼值和進制轉換


  • 程序由來

本人發現計算機中的計算器木有將十進制小數轉二進制的功能,後來發現一些網站將十進制負數轉二進制只是求出整數的二進制,然後前面加“-”,這種表示不是真正的負數二進制。於是愛較真兒的我寫了一個可以轉十進制小數、負數、負數加小數為二進制的系統,供大家學習參考。介於理解代碼,代碼中運用到了純拼音。雖然是拼音,但符合代碼編寫格式。介於個人知識有限,代碼如有需要修改和改進的地方,敬請大家評教指正,共同學習。


  • 實現功能:

  1. 獲取字符的碼值,包括中文。

  2. 進制轉換包括:十進制(整數/小數/負數)轉成二進制、八進制、十六進制。

  3. 供需要學習Java基礎的朋友參考學習。


  • 代碼:

  1. 代碼語言:Java

  2. 包:

    技術分享圖片

  3. 源碼:


  • 主方法(main)類:主要是表現用戶功能選擇界面

package com.main.lt;

import java.util.Scanner;

import com.jinzhizhuanhuan.lt.JinZhiZhuanHuan;
import com.mazhi.lt.HuoQuMaZhi;
import com.menus.lt.Menus;

/**
 * 
 * @author LiuTong
 * @version V1.1
 * 
 * 
 */

public class MainApp {
    public static void main(String[] args) {//主方法
        //創建菜單類對象
        Menus menus = new Menus();
        //創建獲取碼值方法對象
        HuoQuMaZhi hQMZ = new HuoQuMaZhi();
        //創建進制轉換對象
        JinZhiZhuanHuan jinZhiZhuanHuan = new JinZhiZhuanHuan();
        //創建鍵盤錄入對象
        Scanner sc = new Scanner(System.in);
        //使用while循環
        //定義斷點,用於退出while循環
        boolean zhuBL = true;
        while(zhuBL){
            //使用菜單對象調用主菜單
            menus.mainMenus();
            //鍵盤錄入,使用switch語句判斷,做相應操作(case)
            switch(sc.nextLine()){
            case "1"://獲取碼值
                hQMZ.huoQuMaZhi();//使用獲取碼值對象調用獲取碼值方法
                break;
            case "2"://進制轉換
                jinZhiZhuanHuan.jinZhiZhuanHuan();//使用進制轉換對象調用進制轉換方法
                break;
            case "3":
                zhuBL = false;//斷點
                break;
            case "":
                menus.shiKongMenu();//為空菜單
                break;
                default:
                    menus.shuRuCuoWuMenu();//輸入錯誤菜單
                    break;
            }
        }
    }
}

  • 菜單類:

package com.menus.lt;
/**
 * 
 * @author LiuTong
 * @version V1.1
 *
 */
public class Menus {
    //空構造
    public Menus(){
        
    }
    
    //成員方法
    //主菜單
    public void mainMenus(){
        System.out.println("-------------------------主菜單---------------------------");
        System.out.println("1、查詢碼值\t2、進制轉換\t3、退出");
        System.out.print("請輸入您的操作:");
    }
    //------------------------------------------字節碼------------------------------------
    //字節碼菜單
    public void huoQuMaZhiMenus(){
        System.out.println("-------------------------字節碼-------------------------");
        System.out.print("請輸入內容(中文、英語、符號):");
    }
    
    //------------------------------------------進制轉換------------------------------------
    public void jinZhiZhuanHuanMenus(){
        System.out.println("-------------------------進制轉換-------------------------");
        System.out.println("1、二進制轉成其他進制\t2、八進制轉成其他進制\t3、十進制轉成其他進制\t4、十六進制轉成其他進制\n5、返回");
        System.out.print("請輸入您的操作:");
    }
    
    //------------------------------------------十進制轉其他進制------------------------------------
    public void shiZhuanQiTaMenus(){
        System.out.println("------------------十進制轉其他進制------------------");
        System.out.println("1、轉成二進制\t2、轉成八進制\t3、轉成十六進制\n4、返回");
        System.out.print("請輸入您的操作:");
    }
    public void shiZhuanErMenu(){
        System.out.println("------------------十進制轉成二進制------------------");
        System.out.print("請輸入數據(整數(正負)、小數):");
    }
    public void shiZhuanBaMenu(){
        System.out.println("------------------十進制轉成八進制------------------");
        System.out.print("請輸入數據(整數(正負)、小數):");
    }
    public void shiZhuanShiLiuMenu(){
        System.out.println("------------------十進制轉成十六進制------------------");
        System.out.print("請輸入數據(整數(正負)、小數):");
    }
    //-----------------------------------------------------------------------------------------
    //------------------------------------------二進制轉其他進制------------------------------------
    public void erZhaunQiTaMenus(){
        System.out.println("------------------二進制轉其他進制------------------");
        System.out.println("1、轉成八進制\t2、轉成十進制\t3、轉成十六進制\n4、返回");
        System.out.print("請輸入您的操作:");
    }
    public void erZhuanBaMenu(){
        System.out.println("------------------二進制轉成八進制------------------");
        System.out.print("請輸入數據(1/0):");
    }
    public void erZhuanShiMenu(){
        System.out.println("------------------二進制轉成十進制------------------");
        System.out.print("請輸入數據(1/0):");
    }
    public void erZhuanShiLiuMenu(){
        System.out.println("------------------二進制轉成十六進制------------------");
        System.out.print("請輸入數據(1/0):");
    }
    //-----------------------------------------------------------------------------------------
    //------------------------------------------八進制轉其他進制------------------------------------
    public void baZhuanQiTaMenus(){
        System.out.println("------------------八進制轉其他進制------------------");
        System.out.println("1、轉成二進制\t2、轉成十進制\t3、轉成十六進制\n4、返回");
        System.out.print("請輸入您的操作:");
    }
    public void baZhuanErMenu(){
        System.out.println("------------------八進制轉成二進制------------------");
        System.out.print("請輸入數據(0-7):");
    }
    public void baZhuanShiMenu(){
        System.out.println("------------------八進制轉成十進制------------------");
        System.out.print("請輸入數據(0-7):");
    }
    public void baZhuanShiLiuMenu(){
        System.out.println("------------------八進制轉成十六進制------------------");
        System.out.print("請輸入數據(0-7):");
    }
    
    
    //-----------------------------------------------------------------------------------------
    //------------------------------------------十六進制轉其他進制------------------------------------
    public void shiLiuZhuanQiTaMenus(){
        System.out.println("------------------十六進制轉其他進制------------------");
        System.out.println("1、轉成二進制\t2、轉成八進制\t3、轉成十進制\n4、返回");
        System.out.print("請輸入您的操作:");
    }
    public void shiLiuZhuanErMenu(){
        System.out.println("------------------十六進制轉成二進制------------------");
        System.out.print("請輸入數據:");
    }
    public void shiLiuZhuanBaMenu(){
        System.out.println("------------------十六進制轉成十進制------------------");
        System.out.print("請輸入數據:");
    }
    public void shiLiuZhuanShiMenu(){
        System.out.println("------------------十六進制轉成八進制------------------");
        System.out.print("請輸入數據:");
    }
    
    //-----------------------------------------------------------------------------------------

    //輸入為空提示菜單
    public void shiKongMenu(){
        System.out.println("輸入不能為空,請重新輸入!");
    }
    //輸入錯誤提示菜單
    public void shuRuCuoWuMenu(){
        System.out.println("輸入錯誤,請重新輸入!");
    }
    //是否繼續輸入提示
    public void shiFouJiXuMenu(){
        System.out.println("是否繼續(Y/N)?");
    }
    
}

  • 獲取碼值類:

package com.mazhi.lt;

import java.util.Scanner;

import com.jinzhizhuanhuan.lt.JinZhiZhuanHuan;
import com.main.lt.MainApp;
import com.menus.lt.Menus;

/**
 * 
 * @author LiuTong
 * @version V1.1
 *
 */
public class HuoQuMaZhi {
    //空構造
    public HuoQuMaZhi(){}
    //創建菜單對象
    Menus menus = new Menus();
    //定義用戶選擇方法
    public void huoQuMaZhi(){
        //boolean huoQuMaZhiBL = true;
        menus.huoQuMaZhiMenus();//使用菜單對象調用碼值菜單
        byte[] b = new Scanner(System.in).nextLine().getBytes();
        System.out.println(new String(b)+"的字節碼值和二進制表示為:");
        for(int c : b){
           System.out.println("字節碼值:"+c+"\t"+"字節碼值二進制表示:"+Integer.toBinaryString(c));
        }
        System.out.println("------------------------------------------------------");
        //是否繼續
        if(new JinZhiZhuanHuan().sel()){
           huoQuMaZhi();
        }else{
           new MainApp().main(null);
        }
    }
}

  • 進制轉換類:

package com.jinzhizhuanhuan.lt;

import java.util.Scanner;

import com.main.lt.MainApp;
import com.menus.lt.Menus;

/**
 * 
 * @author LiuTong
 * @version V1.1
 *
 */

public class JinZhiZhuanHuan {//進制轉換菜單
    //空構造
    public JinZhiZhuanHuan(){}
    
    //進制轉換選擇方法
    public void jinZhiZhuanHuan(){
        //創建菜單對象
        Menus menus = new Menus();
        //定義斷點
        boolean jinZZHBL = true;
        //while循環
        while(jinZZHBL){
            //使用菜單對象調用進制轉換菜單
            menus.jinZhiZhuanHuanMenus();
            //swtich語句,選擇現有的操作
            switch(new Scanner(System.in).nextLine()){
            case "1":
                erZhuanQiTa();
                break;
            case "2":
                baZhuanQiTa();
                break;
            case "3":
                shiZhuanQiTa();
                break;
            case "4":
                shiLiuZhuanQiTa();
                break;
            case "5":
                new MainApp().main(null);
                break;
            case "":
                menus.shiKongMenu();
                break;
                default:
                    menus.shuRuCuoWuMenu();
                    break;
            }
        }
    }
    //----------------------------------------二進制轉其他進制-----------------------------------------
    //二進制轉其他進制
    public void erZhuanQiTa(){
        Menus menus = new Menus();//創建菜單對象
        //定義斷點
        boolean erZhuanQiTaBL = true;
        //while循環
        while(erZhuanQiTaBL){
            menus.erZhaunQiTaMenus();
            switch(new Scanner(System.in).nextLine()){
            case "1":
                erZhuanBa();
                break;
            case "2":
                erZhuanShi();
                break;
            case "3":
                erZhuanShiLiu();
                break;
            case "4":
                jinZhiZhuanHuan();//返回
                break;
            case "":
                menus.shiKongMenu();
                break;
                default:
                    menus.shuRuCuoWuMenu();
                    break;
            }
        }
    }
    //----------------------------------二進制轉八進制---------------------------------------------
    public void erZhuanBa(){
        new Menus().erZhuanBaMenu();;
        String sel = new Scanner(System.in).nextLine();
        String shi = "";
        if(shiErJinZhi(sel)){
            System.out.println("八進制:"+Integer.toOctalString(Integer.valueOf(Integer.valueOf(sel,2).toString())));
            //判斷是否繼續
            if(sel()){
                erZhuanBa();
            }else{
                erZhuanQiTa();
            }
        }else{
            System.out.println("輸入有誤,請重新輸入!");
            erZhuanBa();
        }
        
    }
    //----------------------------------二進制轉十進制------------------------------------------------
    public void erZhuanShi(){
        new Menus().erZhuanShiMenu();
        String sel = new Scanner(System.in).nextLine();
        if(shiErJinZhi(sel)){
            System.out.println("十進制:"+Integer.valueOf(sel,2).toString());
            //判斷是否繼續
            if(sel()){
                erZhuanShi();
            }else{
                erZhuanQiTa();
            }
        }else{
            System.out.println("輸入有誤,請重新輸入!");
            erZhuanShi();
        }
    }
    //----------------------------------二進制轉十六進制------------------------------------------------
    public void erZhuanShiLiu(){
        new Menus().erZhuanShiLiuMenu();
        String sel = new Scanner(System.in).nextLine();
        if(shiErJinZhi(sel)){
            System.out.println("十六進制:"+Integer.toHexString(Integer.valueOf(Integer.valueOf(sel,2).toString())));
            //判斷是否繼續
            if(sel()){
                erZhuanShiLiu();
            }else{
                erZhuanQiTa();
            }
        }else{
            System.out.println("輸入有誤,請重新輸入!");
            erZhuanShiLiu();
        }
    }
    
    //-------------------------------------------------------------------------------------------
    //----------------------------------------------八進制轉其他進制-----------------------------------
    public void baZhuanQiTa(){
        Menus menus = new Menus();//創建菜單對象
        //定義斷點
        boolean baZhuanQiTaBL = true;
        //while循環
        while(baZhuanQiTaBL){
            menus.baZhuanQiTaMenus();
            switch(new Scanner(System.in).nextLine()){
            case "1":
                baZhuanEr();
                break;
            case "2":
                baZhuanShi();
                break;
            case "3":
                baZhuanShiLiu();
                break;
            case "4":
                jinZhiZhuanHuan();//返回
                break;
            case "":
                menus.shiKongMenu();
                break;
                default:
                    menus.shuRuCuoWuMenu();
                    break;
            }
        }
    }
    //------------------------------------------------八轉二---------------------------------------
    public void baZhuanEr(){
        new Menus().baZhuanErMenu();
        String sel = new Scanner(System.in).nextLine();
        if(shiBaJinZhi(sel)){
            System.out.println("二進制:"+Integer.toBinaryString(Integer.valueOf(Integer.valueOf(sel,8).toString())));
            //判斷是否繼續
            if(sel()){
                baZhuanEr();
            }else{
                baZhuanQiTa();
            }
        }else{
            System.out.println("輸入有誤,請重新輸入!");
            baZhuanEr();
        }
    }
    //------------------------------------------------八轉十---------------------------------------
    public void baZhuanShi(){
        new Menus().baZhuanShiMenu();;
        String sel = new Scanner(System.in).nextLine();
        if(shiBaJinZhi(sel)){
            System.out.println("十進制:"+Integer.valueOf(Integer.valueOf(sel,8).toString()));
            //判斷是否繼續
            if(sel()){
                baZhuanShi();
            }else{
                baZhuanQiTa();
            }
        }else{
            System.out.println("輸入有誤,請重新輸入!");
            baZhuanShi();
        }
    }
    //-------------------------------------------------------------------------------------------

    //------------------------------------------------八轉十六---------------------------------------
    public void baZhuanShiLiu(){
        new Menus().baZhuanShiLiuMenu();;
        String sel = new Scanner(System.in).nextLine();
        if(shiBaJinZhi(sel)){
            System.out.println("二進制:"+Integer.toHexString(Integer.valueOf(Integer.valueOf(sel,8).toString())));
            //判斷是否繼續
            if(sel()){
                baZhuanShiLiu();
            }else{
                baZhuanQiTa();
            }
        }else{
            System.out.println("輸入有誤,請重新輸入!");
            baZhuanShiLiu();
        }
    }
    //-------------------------------------------------------------------------------------------
    //----------------------------------------------十進制轉其他進制-----------------------------------
    //十轉其他
    public void shiZhuanQiTa(){
        //創建菜單目錄
        Menus menus = new Menus();
        //定義斷點
        boolean shiZhuanQiTaBL = true;
        while(shiZhuanQiTaBL){
            menus.shiZhuanQiTaMenus();//調用十轉其他進制菜單
            //switch語句
            switch(new Scanner(System.in).nextLine()){
            case "1":
                shiZhuanEr();
                break;
            case "2":
                shiZhuanBa();
                break;
            case "3":
                shiZhuanShiLiu();
                break;
            case "4":
                jinZhiZhuanHuan();
                break;
            case "":
                menus.shiKongMenu();
                break;
                default:
                    menus.shuRuCuoWuMenu();
                    break;
            }
        }
    }
    //-------------------------十進制轉成二進制---------------------------
    public void shiZhuanEr(){
        //定義斷點
        boolean shiZhuanErBL = true;
        while(shiZhuanErBL){
            new Menus().shiZhuanErMenu();
            String str = new Scanner(System.in).nextLine();
            if(shuZi(str)){
                String regex2 = "-?[0-9]+";
                boolean n = str.matches(regex2);
                //整數部分的二進制
                String l1 = "";
                if(n){
                    System.out.println("二進制:"+Integer.toBinaryString(Integer.valueOf(str)));
                    //判斷是否繼續
                    if(sel()){
                        shiZhuanEr();
                    }else{
                        shiZhuanQiTa();
                    }
                }else if(catc(str)){
                    String [] strs = str.split("\\.");
                    System.out.println("二進制"+Integer.toBinaryString(Integer.valueOf(strs[0])));
                    //判斷是否繼續
                    if(sel()){
                        shiZhuanEr();
                    }else{
                        shiZhuanQiTa();
                    }
                }else{
                    //分割字符串,得到整數部分和小數部分
                    String [] strs = str.split("\\.");
                    if(strs[1]==""){
                        System.out.println("二進制:"+Integer.toBinaryString(Integer.valueOf(str)));
                    }else if(Integer.valueOf(strs[0])>=1){//判斷整數部分是否大於1
                        l1 = Integer.toBinaryString(Integer.valueOf(strs[0]));//得到整數部分二進制
                        
                    }else if(str.startsWith("-")){
                            l1 =Integer.toBinaryString(Integer.valueOf(strs[0]));
                    }else{
                            l1 = "0";
                    }
                    
                    //得到小數部分的二進制
                    String xiao = "0."+strs[1];
                    double xiaoShu = Double.valueOf("0."+strs[1]);
                    //System.out.println(xiaoShu);
                    String l2;//小數部分二進制
                    double b = 0;//每次的乘積
                    int count = xiao.length();
                    StringBuilder sb = new StringBuilder();
                    while(count>=0){
                        b = xiaoShu*2;
                    if(b>=1){
                        sb.append(1);
                        xiaoShu = b-1;
                    }else if(xiaoShu==0){
                        break;
                    }else{
                        sb.append(0);
                        xiaoShu = b;
                    }
                        count--;
                    }
                    //輸出二進制
                    System.out.println("二進制:"+l1+"."+sb);
                    //判斷是否繼續
                    if(sel()){
                        shiZhuanEr();
                    }else{
                        shiZhuanQiTa();
                    }
                }            
            }else{
                shiZhuanEr();
            }
        }
    }
    //-------------------------十進制轉成八進制---------------------------
    public void shiZhuanBa(){
        //定義斷點
        boolean shiZhuanBaBL = true;
        while(shiZhuanBaBL){
            new Menus().shiZhuanBaMenu();
            String str = new Scanner(System.in).nextLine();
            if(shuZi(str)){
                String regex2 = "-?[0-9]*";
                boolean n = str.matches(regex2);
                //整數部分的八進制
                String l1 = "";
                if(n){
                    System.out.println("八進制:"+Integer.toOctalString(Integer.valueOf(str)));
                    //判斷是否繼續
                    if(sel()){
                        shiZhuanBa();
                    }else{
                        shiZhuanQiTa();
                    }
                }else if(catc(str)){
                    String [] strs = str.split("\\.");
                    System.out.println("八進制:"+Integer.toOctalString(Integer.valueOf(strs[0])));
                    //判斷是否繼續
                    if(sel()){
                        shiZhuanBa();
                    }else{
                        shiZhuanQiTa();
                    }
                }else{
                    //分割字符串,得到整數部分和小數部分
                    String [] strs2 = str.split("\\.");
                    if(strs2[1]==""){
                        System.out.println("八進制:"+Integer.toOctalString(Integer.valueOf(str)));
                    }else if(Integer.valueOf(strs2[0])>=1){//判斷整數部分是否大於1
                        l1 = Integer.toOctalString(Integer.valueOf(strs2[0]));//得到整數部分八進制
                        
                    }else if(str.startsWith("-")){
                        l1 = Integer.toOctalString(Integer.valueOf(strs2[0]));
                    }else{
                        l1 = "0";
                    }
                    
                    //得到小數部分的八進制
                    String xiao = "0."+strs2[1];
                    double xiaoShu = Double.valueOf("0."+strs2[1]);
                    //System.out.println(xiaoShu);
                    String l2;
                    double b = 0;//每次的乘積
                    int count = xiao.length();
                    StringBuilder sb = new StringBuilder();
                    while(count>=0){
                        b = xiaoShu*8;
                        if((int)b>=1){
                            sb.append((int)b);
                            xiaoShu = b-(int)b;
                        }else if(xiaoShu==0){
                            break;
                        }else{
                            sb.append(0);
                            xiaoShu = b;
                        }
                        count--;
                    }
                    System.out.println("八進制:"+l1+"."+sb);
                    //判斷是否繼續
                    if(sel()){
                        shiZhuanBa();
                    }else{
                        shiZhuanQiTa();
                    }
                }        
            }else{
                shiZhuanEr();
            }
        }
    }
    //-------------------------十進制轉成十六進制---------------------------
    public void shiZhuanShiLiu(){
        //定義斷點
        boolean shiZhuanShiLiuBL = true;
        while(shiZhuanShiLiuBL){
            new Menus().shiZhuanShiLiuMenu();
            String str = new Scanner(System.in).nextLine();
            if(shuZi(str)){
                String regex2 = "-?[0-9]+";
                boolean n = str.matches(regex2);
                //整數部分的十六進制
                String l1 = "";
                if(n){
                    System.out.println("十六進制:"+Integer.toHexString(Integer.valueOf(str)));
                    //判斷是否繼續
                    if(sel()){
                        shiZhuanShiLiu();
                    }else{
                        shiZhuanQiTa();
                    }
                }else if(catc(str)){
                    String [] strs = str.split("\\.");
                    System.out.println("十六進制:"+Integer.toHexString(Integer.valueOf(strs[0])));
                    //判斷是否繼續
                    if(sel()){
                        shiZhuanShiLiu();
                    }else{
                        shiZhuanQiTa();
                    }
                }else{
                    //分割字符串,得到整數部分和小數部分
                    String [] strs2 = str.split("\\.");
                    if(strs2[1]==""){
                        System.out.println("十六進制:"+Integer.toHexString(Integer.valueOf(str)));
                    }else if(Integer.valueOf(strs2[0])>=1){//判斷整數部分是否大於1
                        l1 = Integer.toHexString(Integer.valueOf(strs2[0]));//得到整數部分十六進制
                        
                    }else if(str.startsWith("-")){
                        l1 = Integer.toHexString(Integer.valueOf(strs2[0]));
                    }else{
                        l1 = "0";
                    }
                    //得到小數部分的十六進制
                    String xiao = "0."+strs2[1];
                    double xiaoShu = Double.valueOf("0."+strs2[1]);
                    //System.out.println(xiaoShu);
                    String l2;//小數部分十六進制
                    double b = 0;//每次的乘積
                    int count = xiao.length();
                    StringBuilder sb = new StringBuilder();
                    while(count>=0){
                        b = xiaoShu*16;
                        if((int)b>=1){
                            sb.append((int)b);
                            xiaoShu = b-(int)b;
                        }else if(xiaoShu==0){
                            break;
                        }else{
                            sb.append(0);
                            xiaoShu = b;
                        }
                        count--;
                    }
                    System.out.println("十六進制:"+l1+"."+sb);
                    //判斷是否繼續
                    if(sel()){
                        shiZhuanShiLiu();
                    }else{
                        shiZhuanQiTa();
                    }
                }
            }else{
                shiZhuanShiLiu();
            }
        }
    }
    //------------------------------十六進制轉其他進制--------------------------------
    public void shiLiuZhuanQiTa(){
        Menus menus = new Menus();//創建菜單對象
        //定義斷點
        boolean shiLiuZhuanQiTaBL = true;
        //while循環
        while(shiLiuZhuanQiTaBL){
            menus.shiLiuZhuanQiTaMenus();
            switch(new Scanner(System.in).nextLine()){
            case "1":
                shiLiuZhuanEr();
                break;
            case "2":
                shiLiuZhuanBa();
                break;
            case "3":
                shiLiuZhuanShi();
                break;
            case "4":
                jinZhiZhuanHuan();//返回
                break;
            case "":
                menus.shiKongMenu();
                break;
                default:
                    menus.shuRuCuoWuMenu();
                    break;
            }
        }
    }
    //-------------------------十六轉二--------------------------
    public void shiLiuZhuanEr(){

        new Menus().shiLiuZhuanErMenu();;
        String sel = new Scanner(System.in).nextLine();
        String shi = "";
        if(shiShiLiuJinZhi(sel)){
            System.out.println("二進制:"+Integer.toBinaryString(Integer.valueOf(Integer.valueOf(sel,16).toString())));
            //判斷是否繼續
            if(sel()){
                shiLiuZhuanEr();
            }else{
                shiLiuZhuanQiTa();
            }
        }else{
            System.out.println("輸入有誤,請重新輸入!");
            shiLiuZhuanEr();
        }
    }
    //-------------------------十六轉八--------------------------
    public void shiLiuZhuanBa(){
        new Menus().shiLiuZhuanBaMenu();
        String sel = new Scanner(System.in).nextLine();
        String shi = "";
        if(shiShiLiuJinZhi(sel)){
            System.out.println("八進制:"+Integer.toOctalString(Integer.valueOf(Integer.valueOf(sel,16).toString())));
            //判斷是否繼續
            if(sel()){
                shiLiuZhuanBa();
            }else{
                shiLiuZhuanQiTa();
            }
        }else{
            System.out.println("輸入有誤,請重新輸入!");
            shiLiuZhuanBa();
        }
    }
    //-------------------------十六轉十--------------------------
    public void shiLiuZhuanShi(){
        new Menus().shiLiuZhuanShiMenu();
        String sel = new Scanner(System.in).nextLine();
        String shi = "";
        if(shiShiLiuJinZhi(sel)){
            System.out.println("十進制:"+Integer.valueOf(Integer.valueOf(sel,16).toString()));
            //判斷是否繼續
            if(sel()){
                shiLiuZhuanShi();
            }else{
                shiLiuZhuanQiTa();
            }
        }else{
            System.out.println("輸入有誤,請重新輸入!");
            shiLiuZhuanShi();
        }
    }
    //-------------------------輸入判斷Yes or No---------------------------
    public boolean sel(){
        boolean bl = true;
        new Menus().shiFouJiXuMenu();
        String str = new Scanner(System.in).nextLine();
        if(str.equalsIgnoreCase("Y")){
            return true;
        }else if(str.equalsIgnoreCase("N")){
            return false;
        }else {
            System.out.println("輸入有誤,請重新輸入!");
            bl = sel();
        }
        return bl;
    }
    
    //-------------------------判斷是否為數字----------------------------
    //判斷是否為數字
    public static boolean shuZi(String str){
        String regex1 = "-?[0-9]+(\\.[0-9]+)?";
        boolean returnBoolean;
        boolean m = str.matches(regex1);
        if(str ==""){
            new Menus().shiKongMenu();
            
            returnBoolean = false;
        }else if(m){
            
            returnBoolean = true;
        }else{
            System.out.println("您的輸入含有不是數字的內容!");
            returnBoolean = false;
        }
        return returnBoolean;
    }
    //-------------------------判斷.後面的數字是否等於0----------------------------
    //判斷.後面的數是否等於0
    public static boolean catc(String str){
        boolean bl = false;
        String [] strs = str.split("\\.");
        if(Integer.valueOf(strs[1])==0){
            bl = true;
        }
        return bl;
    }
    //-----------------------------判斷是否是二進制----------------------------------
    //判斷是否為二進制
    public static boolean shiErJinZhi(String str){
        boolean er = false;
    /*    char[] ch = str.toCharArray();
        for(char c : ch){
            if(c =='0' || c == '1'){
                er = true;
            }
        }*/
        String regex = "[10]+";
        if(str.matches(regex)){
            er = true;
        }
        return er;
    }
    //-----------------------------判斷是否是八進制----------------------------------
    //判斷是否為八進制
    public static boolean shiBaJinZhi(String str){
        boolean ba = false;
        char[] ch = str.toCharArray();
        for(char c : ch){
            if(c >= '0' &&  c<= '7'){
                ba = true;
            }
        }
        return ba;
    }
    //----------------------------判斷是否是十六進制-----------------------------------
    //判斷是否為十六進制
    public static boolean shiShiLiuJinZhi(String str){
        boolean ba = false;
        String str1 = "-?[0-9A-Fa-f]+";
        if(str.matches(str1)){
            ba = true;
        }
        return ba;
    }
}


獲取碼值(各種類型字符(中、英)的ASCII)和進制轉換系統(包括正負數、小數)