鱼C论坛

 找回密码
 立即注册
查看: 1554|回复: 0

[原创] 初学java,贴上一段简简简化版得进制转换系统。(大佬轻点喷{:5_100:} )

[复制链接]
发表于 2020-9-14 14:47:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int function = menu();
        while(function!=0){
            System.out.printf("转换后的数字为:%s\n",inputCommand(function));
            function = menu();
        }

    }

    public static String inputCommand(int function){
        Scanner scan = new Scanner(System.in);
        int function1 = 0;
        String num = " ";
        if(function==1){
            System.out.println("请输入希望转换的进制(请直接输入整数,如输入2,表示二进制):");
            function1 = scan.nextInt();
            System.out.println("请输入你要转换的数:");
            num = scan.next();
            return switch1(function1,num);
        }else if(function==2){
            System.out.println("请输入将要输入的数的进制(请直接输入整数,如输入2,表示二进制):");
            function1 = scan.nextInt();
            System.out.println("请输入你要转换的数:");
            num = scan.next();
            return switch2(function1,num);
        }else if(function==3){
            System.out.println("请输入希望转换的进制(请直接输入整数,如输入2,表示二进制):");
            function1 = scan.nextInt();
            System.out.println("请输入你要转换的数:");
            num = scan.next();
            return switch1(function1,switch2(2,num));
        }else if(function==4){
            System.out.println("请输入将要输入的数的进制(请直接输入整数,如输入2,表示二进制):");
            function1 = scan.nextInt();
            System.out.println("请输入你要转换的数:");
            num = scan.next();
            return switch1(2,switch2(function1,num));
        }
        return "";
    }

    public static int menu(){
        Scanner scan = new Scanner(System.in);
        System.out.println("请选择功能(输入功能前面的序号即可选择):");
        System.out.println("1.十进制向其它进制的转换.");
        System.out.println("2.其它进制向十进制的转换.");
        System.out.println("3.二进制向十六进制和八进制的转换.");
        System.out.println("4.十六进制和八进制向二进制的转换的转换.");
        System.out.println("0.退出。");
        int function = scan.nextInt();

        return function;
    }

    /**
     * 将十进制转换成其它进制(正整数版本)
     * @param function 待转换的进制
     * @param num 待转换的数
     * @return 返回转换后的数
     */
    public static String switch1(int function,String num){
        int num1 = 0;//存放转换之前的数字
        String num2 = " ";//保存转换后的字符

        //将字符转换成数字
        for (int i = 0; i < num.length(); i++) {
            char c = num.charAt(num.length()-1-i);
            num1 += (c-'0')*Math.pow(10,i);
        }

        while(true){
            int flag = num1%function;
            if(flag<=9){
                num2 += flag;
            }else{
                if(flag==10)
                {
                    num2 += "A";
                }else if(flag==11){
                    num2 += "B";
                }else if(flag==12){
                    num2 += "C";
                }else if(flag==13){
                    num2 += "D";
                }else if(flag==14){
                    num2 += "E";
                }else if(flag == 15){
                    num2 += "F";
                }
            }

            num1 = num1/function;
            if(num1==0){
                break;
            }
        }

        return new StringBuilder(num2).reverse().toString();
    }

    /**
     * 将其它进制的数转换成十进制的数
     * @param function 表示当前数的进制
     * @param num 待转换的数
     * @return 返回转换后的数
     */
    public static String switch2(int function,String num){
        int num1 = 0;//存放转换之前的数字
        String num2 = " ";//保存转换后的字符

        //将字符转换成数字
        for (int i = 0; i < num.length(); i++) {
            char c = num.charAt(num.length()-1-i);
            if(c=='A')
            {
                num1 += 10*Math.pow(function,i);
            }else if(c=='B'){
                num1 += 11*Math.pow(function,i);
            }else if(c=='C'){
                num1 += 12*Math.pow(function,i);
            }else if(c=='D'){
                num1 += 13*Math.pow(function,i);
            }else if(c=='E'){
                num1 += 14*Math.pow(function,i);
            }else if(c == 'F'){
                num1 += 15*Math.pow(function,i);
            }else{
                num1 += (c-'0')*Math.pow(function,i);
            }

        }
        num2 = Integer.toString(num1);
        return num2;
    }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-13 20:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表