import java.util.Scanner;public class BHDConverter {static  int from;  //全局变量  从几进制转换为几进制static  int to;//全局变量  要转的进制public static void main(String[] args) {while(true) {showMenu();//显示主菜单boolean isEixt = inputIsExit();//是否退出if (!isEixt) {break;}System.out.println("请输入要转换的数");Scanner scan = new Scanner(System.in);String data= scan.next();if(isLegal(data)){String result = convert(from,to,data);System.out.printf("%s(%d)→%s(%d)\n",data,from,result,to);}else{System.out.println("请输入合法的数据");}}}/*** 判断输入是否法* @param data* @return*/private static boolean isLegal(String data) {for(int i=0;i<data.length();i++ ) {if (2 == from) {if (data.charAt(i) <='0' || data.charAt(i) >='2') {return false;}}if (8 == from) {if (data.charAt(i) <='0' || data.charAt(i) >='8') {return false;}}if (10 == from) {if (data.charAt(i) <='0' || data.charAt(i) >='9') {return false;}}if (16 == from) {if (data.charAt(i) <='0' || data.charAt(i)>= '9' && data.charAt(i) <='a' || data.charAt(i) >='f') {return false;}}}return true;}/***  转换的函数* @param from 源进制* @param to 目标转换的进制* @param data  需转换的数* @return*/private static String convert(int from, int to, String data) {String result = " ";String middle = " ";if (2 == from) {middle = OtherToTen(2, 10, data);switch (to) {case 8:result = tenToOther(10, 8, middle);break;case 10:result = middle;break;case 16:result = tenToOther(10, 16, middle);break;}}else if (8 == from) {middle = OtherToTen(8, 10, data);switch (to) {case 2:result = tenToOther(10, 2, middle);break;case 10:result = middle;break;case 16:result = tenToOther(10, 16, middle);break;}}else if (10 == from) {switch (to) {case 2:result = tenToOther(10, 2, data);break;case 8:result = tenToOther(10, 8, data);break;case 16:result = tenToOther(10, 16, data);break;}}else if (16 == from) {middle = OtherToTen(16, 10, data);switch (to) {case 2:result = tenToOther(10, 2, middle);break;case 8:result = tenToOther(10, 8, middle);break;case 10:result = middle;break;}}return result;}/*** 其他进制转换成十进制* @param from  开始进制* @param to  目标进制* @param data 待转换的数据* @return*/private static String OtherToTen(int from, int to, String data) {String result =" ";int sum=0;if(2==from ){for(int i=data.length()-1;i>=0;i--){int power = data.charAt(data.length()-1-i)-'0';sum +=power *Math.pow(2,i);}result =String.valueOf(sum);} if(8==from){for(int i=data.length()-1;i>=0;i--){int power = data.charAt(data.length()-1-i)-'0';sum +=power *Math.pow(8,i);}result =String.valueOf(sum);}if(16==from){for(int i=data.length()-1;i>=0;i--){String pow = String.valueOf(data.charAt(data.length()-1-i));switch (pow){case "a":  sum += Math.pow(16,i)*10;break;case "b":  sum += Math.pow(16,i)*11;break;case "c":  sum += Math.pow(16,i)*12;break;case "d":  sum += Math.pow(16,i)*13;break;case "f":  sum += Math.pow(16,i)*14;break;case "e":  sum += Math.pow(16,i)*15;break;default:sum += Math.pow(16,i)*Integer.parseInt(pow);break;}}result =String.valueOf(sum);}return result;}/*** 十进制转成其他进制* @param data*/private static String tenToOther(int from, int to, String data) {String s = " ";String order="";int num = Integer.parseInt(data);if(2==to){while(num>0){String remainder = String.valueOf(num%2);s += remainder;num=num/2;}order=orderBack(s);}if(8==to){while(num>0){String remainder = String.valueOf(num%8);s += remainder;num=num/8;}s+="0";order=orderBack(s);} if(16==to){while(num>0) {String remainder = String.valueOf(num % 16);switch (remainder) {case "10":s += 'a';break;case "11":s += 'b';break;case "12":s += 'c';break;case "13":s += 'd';break;case "14":s += 'e';break;case "15":s += 'f';break;default:s += remainder;}num = num / 16;}s += "x0";order += orderBack(s);}return order;}/*** 倒序输出* @param s* @return*/private static String orderBack(String s) {String remainder ="";for(int i=s.length()-1;i>=0;i--){remainder +=s.charAt(i);}return remainder;}/*** 打印主菜单*/private static void showMenu() {System.out.println("*******------显示主菜单------*******");System.out.println("*/A.二进制转换为十六进制/*" +" "+ "*/B.八进制转换为十六进制/*");System.out.println("*/C.十进制转换为十六进制/*" +" " + "*/D.二进制转换为十进制/*");System.out.println("*/E.八进制转换为十进制/*" +" " + "*/F.十六进制转换为十进制/*");System.out.println("*/G.二进制转换为八进制/*" +" " + "*/H.十进制转换为八进制/*");System.out.println("*/I.十六进制转换为八进制/*" +" "+ "*/J.八进制转换为二进制/*");System.out.println("*/K.十进制转换为二进制/*"  +" "+ "*/L.十六进制转换为二进制/*");System.out.println("*/M.退出/*");}/*** 判断输入是否合法* @return 如果合法返回 true   否则返回false*/private static boolean inputIsExit() {Scanner scan = new Scanner(System.in);String n = scan.next();String item =n.toUpperCase();switch (item){case"A":from = 2;to = 16;break;case"B":from = 8;to = 16;break;case"C":from = 10;to = 16;break;case"D":from = 2;to = 10;break;case"E":from = 8;to = 10;break;case"F":from = 16;to = 10;break;case"G":from = 2;to = 8;break;case"H":from = 10;to = 8;break;case"I":from = 16;to = 8;break;case"J":from = 8;to = 2;break;case"K":from = 10;to = 2;break;case"L":from = 16;to = 2;break;case"M":return false;default:System.out.println("输入错误");return  false;}return true;}
}

【Java】进制转换器的实现相关推荐

  1. java进制转换界面,java进制转换器 图形用户界面 十进制及其相反数诀别转化为二,四,八,十六进制...

    java进制转换器 图形用户界面 十进制及其相反数分别转化为二,四,八,十六进制 package com.rgy.Test; import java.awt.Color; import java.aw ...

  2. 用java编写进制转换器_JAVA 简单进制转换器

    JAVA作业写了个进制转换器...写出来的东西还蛮怪的 /* * Author:graykido * Coding:GBK * */ package Caculater; import javafx. ...

  3. 进制转换器java程序_Java实现复杂的进制转换器功能示例

    本文实例讲述了Java实现复杂的进制转换器功能.分享给大家供大家参考,具体如下: 这是用java写的进制转换器,包括10.2.8.16进制之间共12种的相互转换.输入一个要转换的数之后,按提示选择所采 ...

  4. android进制之间的转换器,一个Android平台的16进制转换器

    <一个Android平台的16进制转换器>由会员分享,可在线阅读,更多相关<一个Android平台的16进制转换器(1页珍藏版)>请在人人文库网上搜索. 1.一个An droi ...

  5. java进制转换代码

    java进制转换代 定义十进制的数直接写,定义8进制的数以0开头,定义二进制的数以0b开头,定义十六进制的数以0x开头 需要将十进制的数以二进制的数表示出来可以参照下例: int a = 10; Sy ...

  6. C++ 进制转换器:二进制、十进制、十六进制

    做了一个C++进制转换器,支持10转2.10转16.2转10.16转10.10转2.2转16,解析都写在代码里哦! #include <bits/stdc++.h> using names ...

  7. 进制转换器的c代码实现

    1.很久没有更新博客了 这次想要记录分享一下在这段学习过程中实现的进制转换器 c语言代码 里面运用到了一些数据结构和递归的相关知识 也算是一个简单的综合运用吧 2.核心思想是将一切进制转换为10进制 ...

  8. 练习:自撸整数进制转换器(二、八、十六进制转十进制)

    我的CSDN主页 My Python 学习个人备忘录 我的HOT博 整数进制转换器(二.八.十六进制转十进制) 题目 代码运行效果 我的解题思路 转换器完整代码 题目   跟着寒佬整数进制转换,生发自 ...

  9. Shell脚本之进制转换器

    一.需求说明   计算IP地址我们经常需要将十进制和二进制数值之间进行转换,实际上进制之间转换通过bc命令就可以完成.此进制转换器shell脚本就是利用bc进制转换功能来实现我们的需求,并做了一些完善 ...

  10. 万能进制转换器——栈应用

    万能进制转换器--栈应用 前言 一.设计思路 1.字符串和数字通过ASCII码来转换 2.先将用户输入的数字转换为10进制,再由10进制转为其他进制 二.具体步骤的实现 1.准备步骤 1.执行步骤 ( ...

最新文章

  1. Go Code Review Comments 翻译 编写优雅golang代码
  2. (三)git常用命令及方法大全
  3. vue调用手机相机相册_详解Vue调用手机相机和相册以及上传
  4. node php聊天室,最简单的Nodejs聊天室示例
  5. Linux Shell脚本_较少Swap使用
  6. Ubuntu 下安装 输入法
  7. 视频技术系列 - 2020年超高清视频技术创新实践
  8. spark学习-JavaRDD注册成表然后用SparkSQL查询
  9. VS 2017 RC到期的解决方法
  10. python绘制密度图
  11. ModelSim仿真实例教程
  12. 计算机窗体视频教程,计算机二级Access2010视频教程
  13. win10u盘被写保护怎么解除_Win10系统下U盘写保护应该如何破除!
  14. linaro 网站资源
  15. ICCV 2017:训练GAN的16个技巧,2400+星(PPT)
  16. DellR240服务器U盘引导,【dell uefi u盘引导】dellr730配置uefi引导_dell uefi启动
  17. 【按键精灵源码】一个稍微复杂点的脚本界面
  18. Android FTP功能开发基于swiftp
  19. 解决error C2059: 语法错误:“::”问题
  20. kewail邮件短信平台

热门文章

  1. html跳动爱心代码,html+css实现跳动爱心❥(^_-)-Go语言中文社区
  2. 职场精英修炼必学工具:75页自我管理的29个工具,系统方法论
  3. 一步步实现SDDC-部署VC后的配置
  4. Mysql学习总结(69)——Mysql EXPLAIN 命令使用总结
  5. golang 解析php序列化,golang实现php里的serialize()和unserialize()序列和反序列方法
  6. 循环机换变速箱油教程_汽车变速箱油啥时更换?重力换和循环机换有啥区别?注意啥?...
  7. zabbix之解决中文乱码
  8. UE4中Bebavior Tree中Delay及其后面代码失效的原因
  9. 删除和创建用户的脚本
  10. MvcPager 免费开源分页控件3.0版发布!