使用JAVA将非负十进制整数n转换成b进制,递归方法与非递归方法

使用JAVA将非负十进制整数n转换成b进制,递归方法与非递归方法

一.题目要求

将非负十进制整数n转换成b进制。(其中b=2~16)

二.流程设计

1.非递归

依据十进制数求余到最后商为0的特点,将num/b作为循环的终止条件,进行循环求进制数。

2.递归

①num/b==0 result.append(num%b)

②num/b!=0transform(result,num/b,b).append(sb);

三.算法实现

1.非递归实现

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

System.out.println("请输入一个十进制数:");

Scanner sc = new Scanner(System.in);

String num = sc.next();

System.out.println("请输入要转化的进制(2-16):");

String b = sc.next();

if(judge(num)){

System.out.println("输入十进制数格式正确");

}

else{

System.out.println("输入十进制数格式错误");

}

if(judge(b)){

System.out.println("输入转化的进制数格式正确");

}

else{

System.out.println("输入转化的进制数格式错误");

}

String result = transform(num,b);

System.out.println("十进制数 "+num+" 转化为"+b+"进制数为: "+result);

sc.close();

}

public static boolean judge(String num){

char[] numArray = num.toCharArray();

for(int i=0;i

if(numArray[i]<48 | numArray[i]>57){//若输入的字符非数字字符,返回false

return false;

}

}

return true;

}

public static String transform(int num,int b){

StringBuffer sb = new StringBuffer();

while(num!=0){

switch(num%b){

case 10: sb.append("A"); break;

case 11: sb.append("B"); break;

case 12: sb.append("C"); break;

case 13: sb.append("D"); break;

case 14: sb.append("E"); break;

case 15: sb.append("F"); break;

default : sb.append(Integer.toString(num%b));

}

num = num/b;

}

return sb.reverse().toString();

}

public static String transform(String numString,String bString){

int num = Integer.parseInt(numString);

int b = Integer.parseInt(bString);

return transform(num,b);

}

}

2.递归实现

import java.util.Scanner;

public class Main {

public static void main(String[] args) {

System.out.println("请输入一个十进制数:");

Scanner sc = new Scanner(System.in);

String num = sc.next();

System.out.println("请输入要转化的进制(2-16):");

String b = sc.next();

if(judge(num)){

System.out.println("输入十进制数格式正确");

}

else{

System.out.println("输入十进制数格式错误");

}

if(judge(b)){

System.out.println("输入转化的进制数格式正确");

}

else{

System.out.println("输入转化的进制数格式错误");

}

StringBuffer result = new StringBuffer("");

result= transform(result,num,b).reverse();

System.out.println("十进制数 "+num+" 转化为"+b+"进制数为: "+result);

sc.close();

}

public static boolean judge(String num){

char[] numArray = num.toCharArray();

for(int i=0;i

if(numArray[i]<48 | numArray[i]>57){//若输入的字符非数字字符,返回false

return false;

}

}

return true;

}

//将十进制数转化为b进制数

public static StringBuffer transform(StringBuffer result,int num,int b){

StringBuffer sb = new StringBuffer();

if(num/b==0){

return result.append(num%b);

}

else{//处理字符串result,给末尾加上余数

switch(num%b){

case 10: sb.append("A"); break;

case 11: sb.append("B"); break;

case 12: sb.append("C"); break;

case 13: sb.append("D"); break;

case 14: sb.append("E"); break;

case 15: sb.append("F"); break;

default : sb.append(num%b); break;

}

return transform(result,num/b,b).append(sb);

}

}

public static StringBuffer transform(StringBuffer result,String numString,String bString){

int num = Integer.parseInt(numString);

int b = Integer.parseInt(bString);

return transform(result,num,b);

}

}

四.运行截图

五.总结经验

使用JAVA将非负十进制整数n转换成b进制,递归方法与非递归方法相关教程

java非负整数怎么设_使用JAVA将非负十进制整数n转换成b进制,递归方法与非递归方法...相关推荐

  1. 第E题 转换任意进制 (java方法直接解)==输入一个十进制数N,将它转换成R进制数输出

    输入一个十进制数N,将它转换成R进制数输出. Input 输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10). Outpu ...

  2. java字节数组转换成16进制_Java 将字节数组转化为16进制的多种方案

    很多时候我们需要将字节数组转化为16进制字符串来保存,尤其在很多加密的场景中,例如保存密钥等.因为字节数组,除了写入文件或者以二进制的形式写入数据库以外,无法直接转为为字符串,因为字符串结尾有\0,当 ...

  3. java 8个字节转一位_8个字节的16进制数 怎么转换成10进制数

    Java codeimport java.util.Arrays;public class ChangeBytesToNumber{ public static void main(String[] ...

  4. java将一个数转成36进制的数_编程实现将一个N进制数转换成M进制数。

    python: 手写算法版: def conversion_num(num, src, dest): rtn = '' # 1.校验源和目标是否相同 if src == dest: rtn = num ...

  5. java 16进制数组 字符串_byte数组转换成16进制字符串和字符数组的方法

    byte数组转换成16进制字符串String: public class CommonUtil { /** * byte数组转换成16进制字符串 * @param src * @return */ p ...

  6. java 16进制字符转10进制_java 16进制字符串怎么转换成10进制字符串

    展开全部 toHexString public static String toHexString(int i)以十六进制的无符号整数形式返回一个整数参数的字符串表示形式. 如果参数为负,那么无符号整 ...

  7. java开发区块链_使用Java语言从零开始创建区块链

    目前网络上关于区块链入门.科普的文章不少,本文就不再赘述区块链的基本概念了,如果对区块链不是很了解的话,可以看一下我之前收集的一些入门学习资源: 对区块链技术感到新奇的我们,都想知道区块链在代码上是怎 ...

  8. java中的进制输出转换_java中进制的转换,Byte与16进制的转换

    java中对于进制的转换有很多方式,其中对于常见的基本的二进制 八进制 十进制 十六进制等的转换有对于的包装类实现,不需要通过二外的算法来进行实现,具体如下: 首先关于最简单的二进制转换的方法有: 十 ...

  9. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

最新文章

  1. 每日一皮:多线程理想与现实的差距
  2. 三、糖醋鲤鱼(Sweet and sour carp)
  3. u852日期限制解决补丁_用友U8hotfix和补丁包替换原则及注意事项
  4. ubuntu16.04中安装tensflow教程
  5. 程序员修神之路--设计一套RPC框架并非易事
  6. 《凡人修仙传》中打斗场景(c++多态实现)
  7. ASP.Net Mvc 发布网站 (样式+图片问题)
  8. Python入门之经典函数实例
  9. NVIDIA NSight System工具安装和使用介绍(MacOS)
  10. 基于ZEGO SDK实现多人视频通话功能
  11. rn 地图根据区名获取经纬度_React Native获取地理位置(获取具体城市、经纬度)...
  12. 数据结构测试题——树和二叉树(一)
  13. 最简单的 DRM 应用 drm设备不工作
  14. 快速排序算法quickSort
  15. java 根据用户名生成头像。
  16. linux sh脚本 -p,“读取-p”在linux shell脚本中做了什么?
  17. 【思维导图】巩固你的JavaScript知识体系
  18. kafka 报错: LEADER_NOT_AVAILABLE
  19. Linux ❉ 正则表达式
  20. 为什么这么努力还这么贫穷?

热门文章

  1. php 命令设计模式示例,php设计模式(十九)命令模式-Fun言
  2. mysql 授权 失败_完美解决mysql客户端授权后连接失败的问题
  3. android layout_margin的值,Android自定义ViewGroup( 支持layout_margin属性)
  4. 想要导航首页提示页_如何设计电商首页运营后台
  5. html语言汇总,第三讲HTML语言全面介绍汇总.ppt
  6. mybatis 调用 oracle函数_MyBatis之启动分析(一)
  7. ❤️《大前端—了解与使用ES6》
  8. 微信小程序弹框禁止下面的页面滚动
  9. JavaScript:模块化及模块化规范
  10. python语言与c语言相比在分支结构上有什么不同_C语言顺序结构和分支结构总结...