Java-进制转换程序

import java.util.Scanner;

public class BaseConverter {
       public static void main(String[] args) {
        Scanner input = new Scanner(System.in); // 创建一个扫描器对象,用于获取用户输入
        System.out.println("欢迎使用转换进制的程序!");
        System.out.println("如果你想退出程序,请输入q或Q");
        //通过不断地将十进制数除以目标进制,
        // 然后取余数,直到商为0,每次得到的余数就是转换后的结果的一位,
        // 从低位至高位依次排列
        //如果余数小于10,就用数字字符表示,否则用字母字符表示
        while (true) { // 无限循环,直到用户输入q或Q退出程序
            int decimal = 0; // 用户输入的十进制数
            int base = 0; // 用户输入的目标进制
            boolean valid = false; // 用户输入是否合法
            // 获取用户输入的十进制数
            System.out.println("请输入一个十进制的正整数,例如:10");
            while (!valid) { // 循环,直到用户输入合法的十进制数
                System.out.print("请输入:");
                String line = input.nextLine(); // 获取用户输入的一行字符串
                if (line.equalsIgnoreCase("q")) { // 如果用户输入q或Q,表示想要退出程序
                    System.out.println("感谢使用转换进制的程序,再见!");
                    input.close(); // 关闭扫描器对象
                    return; // 结束程序
                }
                try {
                    decimal = Integer.parseInt(line); // 尝试将用户输入的字符串转换为整数
                    if (decimal <= 0) { // 如果整数小于等于零,表示不合法
                        System.out.println("十进制数必须为正数,请重新输入!");
                    } else { // 如果整数大于零,表示合法
                        valid = true; // 设置用户输入为合法
                    }
                } catch (Exception e) { // 如果转换过程中发生异常,表示用户输入不是整数,不合法
                    System.out.println("十进制数必须为整数,请重新输入!");
                }
            }
            // 获取用户输入的目标进制
            valid = false; // 重置用户输入是否合法
            System.out.println("请输入一个目标进制(2到16之间),例如:2");
            while (!valid) { // 循环,直到用户输入合法的目标进制
                System.out.print("请输入:");
                String line = input.nextLine(); // 获取用户输入的一行字符串
                if (line.equalsIgnoreCase("q")) { // 如果用户输入q或Q,表示想要退出程序
                    System.out.println("感谢使用转换进制的程序,再见!");
                    input.close(); // 关闭扫描器对象
                    return; // 结束程序
                }
                try {
                    base = Integer.parseInt(line); // 尝试将用户输入的字符串转换为整数
                    if (base < 2 || base > 16) { // 如果整数小于2或大于16,表示不合法
                        System.out.println("目标进制必须在2到16之间,请重新输入!");
                    } else { // 如果整数在2到16之间,表示合法
                        valid = true; // 设置用户输入为合法
                    }
                } catch (Exception e) { // 如果转换过程中发生异常,表示用户输入不是整数,不合法
                    System.out.println("目标进制必须为整数,请重新输入!");
                }
            }
            // 转换进制并输出结果
            String result = ""; // 存储转换后的结果
            int remainder = 0; // 存储每次除法的余数
            char digit = ' '; // 存储每一位的字符表示
            while (decimal > 0) { // 循环,直到十进制数为零
                remainder = decimal % base; // 计算余数
                if (remainder < 10) { // 如果余数小于10,用数字字符表示
                    digit = (char) ('0' + remainder);
                } else { // 如果余数大于等于10,用字母字符表示
                    digit = (char) ('A' + remainder - 10);
                }
                result = digit + result; // 将余数添加到结果的最前面
                decimal = decimal / base; // 计算商
            }
            System.out.println("转换后的结果是:" + result); // 输出结果
        }
    }
}

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值