【Java】进制转换器的实现
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】进制转换器的实现相关推荐
- java进制转换界面,java进制转换器 图形用户界面 十进制及其相反数诀别转化为二,四,八,十六进制...
java进制转换器 图形用户界面 十进制及其相反数分别转化为二,四,八,十六进制 package com.rgy.Test; import java.awt.Color; import java.aw ...
- 用java编写进制转换器_JAVA 简单进制转换器
JAVA作业写了个进制转换器...写出来的东西还蛮怪的 /* * Author:graykido * Coding:GBK * */ package Caculater; import javafx. ...
- 进制转换器java程序_Java实现复杂的进制转换器功能示例
本文实例讲述了Java实现复杂的进制转换器功能.分享给大家供大家参考,具体如下: 这是用java写的进制转换器,包括10.2.8.16进制之间共12种的相互转换.输入一个要转换的数之后,按提示选择所采 ...
- android进制之间的转换器,一个Android平台的16进制转换器
<一个Android平台的16进制转换器>由会员分享,可在线阅读,更多相关<一个Android平台的16进制转换器(1页珍藏版)>请在人人文库网上搜索. 1.一个An droi ...
- java进制转换代码
java进制转换代 定义十进制的数直接写,定义8进制的数以0开头,定义二进制的数以0b开头,定义十六进制的数以0x开头 需要将十进制的数以二进制的数表示出来可以参照下例: int a = 10; Sy ...
- C++ 进制转换器:二进制、十进制、十六进制
做了一个C++进制转换器,支持10转2.10转16.2转10.16转10.10转2.2转16,解析都写在代码里哦! #include <bits/stdc++.h> using names ...
- 进制转换器的c代码实现
1.很久没有更新博客了 这次想要记录分享一下在这段学习过程中实现的进制转换器 c语言代码 里面运用到了一些数据结构和递归的相关知识 也算是一个简单的综合运用吧 2.核心思想是将一切进制转换为10进制 ...
- 练习:自撸整数进制转换器(二、八、十六进制转十进制)
我的CSDN主页 My Python 学习个人备忘录 我的HOT博 整数进制转换器(二.八.十六进制转十进制) 题目 代码运行效果 我的解题思路 转换器完整代码 题目 跟着寒佬整数进制转换,生发自 ...
- Shell脚本之进制转换器
一.需求说明 计算IP地址我们经常需要将十进制和二进制数值之间进行转换,实际上进制之间转换通过bc命令就可以完成.此进制转换器shell脚本就是利用bc进制转换功能来实现我们的需求,并做了一些完善 ...
- 万能进制转换器——栈应用
万能进制转换器--栈应用 前言 一.设计思路 1.字符串和数字通过ASCII码来转换 2.先将用户输入的数字转换为10进制,再由10进制转为其他进制 二.具体步骤的实现 1.准备步骤 1.执行步骤 ( ...
最新文章
- Go Code Review Comments 翻译 编写优雅golang代码
- (三)git常用命令及方法大全
- vue调用手机相机相册_详解Vue调用手机相机和相册以及上传
- node php聊天室,最简单的Nodejs聊天室示例
- Linux Shell脚本_较少Swap使用
- Ubuntu 下安装 输入法
- 视频技术系列 - 2020年超高清视频技术创新实践
- spark学习-JavaRDD注册成表然后用SparkSQL查询
- VS 2017 RC到期的解决方法
- python绘制密度图
- ModelSim仿真实例教程
- 计算机窗体视频教程,计算机二级Access2010视频教程
- win10u盘被写保护怎么解除_Win10系统下U盘写保护应该如何破除!
- linaro 网站资源
- ICCV 2017:训练GAN的16个技巧,2400+星(PPT)
- DellR240服务器U盘引导,【dell uefi u盘引导】dellr730配置uefi引导_dell uefi启动
- 【按键精灵源码】一个稍微复杂点的脚本界面
- Android FTP功能开发基于swiftp
- 解决error C2059: 语法错误:“::”问题
- kewail邮件短信平台
热门文章
- html跳动爱心代码,html+css实现跳动爱心❥(^_-)-Go语言中文社区
- 职场精英修炼必学工具:75页自我管理的29个工具,系统方法论
- 一步步实现SDDC-部署VC后的配置
- Mysql学习总结(69)——Mysql EXPLAIN 命令使用总结
- golang 解析php序列化,golang实现php里的serialize()和unserialize()序列和反序列方法
- 循环机换变速箱油教程_汽车变速箱油啥时更换?重力换和循环机换有啥区别?注意啥?...
- zabbix之解决中文乱码
- UE4中Bebavior Tree中Delay及其后面代码失效的原因
- 删除和创建用户的脚本
- MvcPager 免费开源分页控件3.0版发布!