编辑2:我是Java新手。所以我想坚持基本的东西,如定义变量,while循环和foo循环,if-else,和打印。解析命令行参数。我相信这就是这个程序所需要的,如果我说错了请纠正我
我想做一个东西,可以接受一个数字和一个进制,这样它就可以把这个数字转换成另一个进制的数字,从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);
}
}