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

本文介绍了一种将非负十进制整数转换为2到16进制的算法,包括递归和非递归两种实现方法。通过除以目标进制并取余,将结果逆序存储,实现了进制的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将非负十进制整数n转换成b进制。(其中b=2~16)
要求实现递归和非递归两种方法

本代码采用数学上 ‘数除以进制取余的方法’ 将余数从后往前存入一个String变量,来实现进制的转换

public class Test {
//主函数
 public static void main(String[] args) {
  JS j=new JS();
  Scanner in=new Scanner(System.in);
  System.out.print("请输入要转化的十进制数:");
  int n=in.nextInt();
  System.out.print("请输入要转化的进制(2-16):");
  int x=in.nextInt();
  while(x<2||x>16) {
   System.out.print("输入进制错误,请输入2-16之中的进制:");
   x=in.nextInt();
  }
  System.out.println("递归方法:");
  j.digui(n,x);
  System.out.println("非递归方法:");
  j.feidigui(n,x);
  in.close();
 }
}

class JS{
 String a="";//存储递归方法转换后的值
 String b="";//存储非递归方法转换后的值

 //递归求解
 void digui(int n,int x) {
  String s=String.valueOf(n%x);
  switch(s) {
  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;
  }
  if(n<x) {
   a=s+a;
   System.out.println("转化为"+x+"进制为:"+a);
  }
  else {
   a=s+a;
   digui(n/x,x);
  }
 }

 //非递归求解
 void feidigui(int n,int x) {
  while(n!=0) {
   String s=String.valueOf(n%x);
   switch(s) {
   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;
   }
   b=s+b;
   n=n/x;
  }
  System.out.println("转化为"+x+"进制为:"+b);
 }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值