鱼C论坛

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

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

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

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

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

x
  1. import java.util.Scanner;

  2. public class Main {

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

  10.     }

  11.     public static String inputCommand(int function){
  12.         Scanner scan = new Scanner(System.in);
  13.         int function1 = 0;
  14.         String num = " ";
  15.         if(function==1){
  16.             System.out.println("请输入希望转换的进制(请直接输入整数,如输入2,表示二进制):");
  17.             function1 = scan.nextInt();
  18.             System.out.println("请输入你要转换的数:");
  19.             num = scan.next();
  20.             return switch1(function1,num);
  21.         }else if(function==2){
  22.             System.out.println("请输入将要输入的数的进制(请直接输入整数,如输入2,表示二进制):");
  23.             function1 = scan.nextInt();
  24.             System.out.println("请输入你要转换的数:");
  25.             num = scan.next();
  26.             return switch2(function1,num);
  27.         }else if(function==3){
  28.             System.out.println("请输入希望转换的进制(请直接输入整数,如输入2,表示二进制):");
  29.             function1 = scan.nextInt();
  30.             System.out.println("请输入你要转换的数:");
  31.             num = scan.next();
  32.             return switch1(function1,switch2(2,num));
  33.         }else if(function==4){
  34.             System.out.println("请输入将要输入的数的进制(请直接输入整数,如输入2,表示二进制):");
  35.             function1 = scan.nextInt();
  36.             System.out.println("请输入你要转换的数:");
  37.             num = scan.next();
  38.             return switch1(2,switch2(function1,num));
  39.         }
  40.         return "";
  41.     }

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

  51.         return function;
  52.     }

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

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

  67.         while(true){
  68.             int flag = num1%function;
  69.             if(flag<=9){
  70.                 num2 += flag;
  71.             }else{
  72.                 if(flag==10)
  73.                 {
  74.                     num2 += "A";
  75.                 }else if(flag==11){
  76.                     num2 += "B";
  77.                 }else if(flag==12){
  78.                     num2 += "C";
  79.                 }else if(flag==13){
  80.                     num2 += "D";
  81.                 }else if(flag==14){
  82.                     num2 += "E";
  83.                 }else if(flag == 15){
  84.                     num2 += "F";
  85.                 }
  86.             }

  87.             num1 = num1/function;
  88.             if(num1==0){
  89.                 break;
  90.             }
  91.         }

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

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

  103.         //将字符转换成数字
  104.         for (int i = 0; i < num.length(); i++) {
  105.             char c = num.charAt(num.length()-1-i);
  106.             if(c=='A')
  107.             {
  108.                 num1 += 10*Math.pow(function,i);
  109.             }else if(c=='B'){
  110.                 num1 += 11*Math.pow(function,i);
  111.             }else if(c=='C'){
  112.                 num1 += 12*Math.pow(function,i);
  113.             }else if(c=='D'){
  114.                 num1 += 13*Math.pow(function,i);
  115.             }else if(c=='E'){
  116.                 num1 += 14*Math.pow(function,i);
  117.             }else if(c == 'F'){
  118.                 num1 += 15*Math.pow(function,i);
  119.             }else{
  120.                 num1 += (c-'0')*Math.pow(function,i);
  121.             }

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 18:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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