将数字转换为用户选择的基数



我想做一个东西,可以接受一个数字和一个进制,这样它就可以把这个数字转换成另一个进制的数字,从2进制到16进制。

。Stdin将是67和2,这意味着用户希望程序将数字67转换为二进制形式。stdout将是1000010 .

因此,我首先编写了以下代码来启动它。该程序接受一个数字并将其转换为二进制格式。

public class ChangeofBase { 
    public static void main(String[] args) { 
        // read in the command-line argument
        int n = Integer.parseInt(args[0]); 
        // set v to the largest power of two that is <= n
        int v = 1; 
        while (v <= n/2) {
            v *= 2;
        }
        // check for presence of powers of 2 in n, from largest to smallest
        while (v > 0) {
            // v is not present in n 
            if (n < v) {
                System.out.print(0);
            }
            // v is present in n, so remove v from n
            else {
                System.out.print(1);
                n -= v;
            }
            // next smallest power of 2
            v /= 2;
        }
        System.out.println();
    }
}

如何修改上面的代码来执行下面的功能?

输入数字n和碱k,使n转换为碱k

同样,k必须在2和16之间。以2和16为底。二进制和十六进制。谢谢你!

编辑:我想在不使用内置函数的情况下做到这一点。硬编码
编辑2:我是Java新手。所以我想坚持基本的东西,如定义变量,while循环和foo循环,if-else,和打印。解析命令行参数。我相信这就是这个程序所需要的,如果我说错了请纠正我

您可以使用Integer.toString(int i, int radix).

除了Java内置的函数,您还可以在Java中使用简单的除法和模数运算来实现。

public class IntBaseConverter {
public static void main(String[] args) {
    convert(Integer.parseInt(args[0]), Integer.parseInt(args[1]));
}
public static void convert(int decimalValue, int base) {
    String result = "";
    while (decimalValue >= base) {
        result = decimalValue % base + result;
        decimalValue /= base;
    }
    result = decimalValue + result;
    System.out.println(result);
}
}

相关内容

  • 没有找到相关文章

最新更新