练习:十进制转换成其他任意(2-36)进制

1.题目

抽还
给定一个十进制数,将它转换成为任意进制的数值
输入
输入包含多组a,b通过空格隔开
a表示十进制数,b表示进制
例如102表示把十进制数10转换为2进制数
一对a,b占输入的一行
a取值范围:-2147483648~+2141483647
b取值范围:2-36.
输出
对于输入的每对a,b,你需要依次输出a,b的和
对于输入中的第二对a,b,在输出中它们的和应该也在第二行
输入样例1自 输出样例1
10 2 1010
10 8 12
10 16 A

2.代码

package SysConvert;

import java.util.ArrayList;
import java.util.Scanner;

/**
 * 进制转换工具类
 * @author 怦九
 * @date 2021/11/12
 */
public class SysConvertTools {
    /*
    进制转换进程
     */
    public static void sysConvert(){
        ArrayList<String> results = new ArrayList<>();
        Scanner sc = new Scanner(System.in);
        System.out.println("---------欢迎使用十进制转任意进制系统--------");
        System.out.println("---------输入格式:十进制数字 其他进制--------");
        System.out.println("---------十进制数字和进制之间用空格隔开--------");
        System.out.println("---------多组输入请用回车分割--------");
        System.out.println("十进制数字取值范围:-2147483648~2141483647");
        System.out.println("进制取值范围:2-36");
        System.out.println("例如输入10 2,输出结果为1010");

        //s用于存储每一行的输出结果,
        String s = " ";
        System.out.println("请输入:");
        //多组输入回车分割时,只要输入的不是空字符串,程序就会继续
        while(!"".equals(s)){
            s = sc.nextLine();

            //通过split方法,根据空格分割出一个数组
            String[] stringArray = s.split(" ");

            //跳出循环的设定,如果字符串为空字符串,就可以跳出该while循环
            if("".equals(stringArray[0]) ||  "".equals(stringArray[1])){
                break;
            }

            //使用Integer包装类,将字符串转换成int类型
            int a = Integer.parseInt(stringArray[0]);
            int b = Integer.parseInt(stringArray[1]);

            //result用于存放结果
            String result = "";
            //字母数组,用于存储A-Z
            String [] letters = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
            //数字数组,用于存储10-35
            int [] numbers = {10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35};
            while(a >= b || a %b !=0 ){

                //for循环判断,索引对应,10对应A,11对应B,以此类推
                for (int i = 0; i < numbers.length; i++) {
                    if(a % b == numbers[i]){
                        result = letters[i] + result;
                        break;
                    }
                }
                //如果余数只在0-9,那么直接拼接就可以了
                if(a % b < 10){
                    result = a % b + result;
                }
                a = a / b;
            }
            //每一次结果都放入ArrayList集合中
            results.add(result);
        }

        System.out.println("结果如下:");
        for (String result : results) {
            System.out.println(result);
        }

    }


}

package SysConvert;



/**
 * @author 怦九
 * @date 2021/11/12
 */
public class Test {
    public static void main(String[] args) {
        SysConvertTools.sysConvert();
    }
}

3.程序运行结果

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

香鱼嫩虾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值