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

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

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

一.题目要求

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

二.流程设计

1.非递归

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

a97c74719aa6ebd8411677ecee68326e.png

2.递归

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

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

0d3c9cb580ad34f79ccafae632887a8f.png

三.算法实现

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);

}

}

四.运行截图

41e88cb9f6c240d93f292716d54fc6d8.png

2a1f1ed61e9d1406cfb1894ab168e2e2.png

五.总结经验

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值