我需要在 Java 中执行此操作。
我有一个固定大小的整数数组,大小为
number_of_slots
,初始化为全0。
我需要创建一个函数,根据
number_base
的数基递增数组。
每个单独的值都应打印到屏幕上。
我不需要在打印到屏幕后存储单个数组值,因此一维数组应该可以工作。
number_of_slots
和number_base
应该能够在程序中更改,重新编译,并使用更新的参数再次运行。
例如,如果
number_of_slots
为 3,number_base
为 2,则输出应如下所示:
slot 2 is 0, slot 1 is 0, slot 0 is 0
slot 2 is 0, slot 1 is 0, slot 0 is 1
slot 2 is 0, slot 1 is 1, slot 0 is 0
slot 2 is 0, slot 1 is 1, slot 0 is 1
slot 2 is 1, slot 1 is 0, slot 0 is 0
slot 2 is 1, slot 1 is 0, slot 0 is 1
slot 2 is 1, slot 1 is 1, slot 0 is 0
slot 2 is 1, slot 1 is 1, slot 0 is 1
如果
number_of_slots
为 2 并且 number_base
为 3,则输出应如下:
slot 1 is 0, slot 0 is 0
slot 1 is 0, slot 0 is 1
slot 1 is 0, slot 0 is 2
slot 1 is 1, slot 0 is 0
slot 1 is 1, slot 0 is 1
slot 1 is 1, slot 0 is 2
slot 1 is 2, slot 0 is 0
slot 1 is 2, slot 0 is 1
slot 1 is 2, slot 0 is 2
是否有一个我似乎找不到的内置函数可以做到这一点?或者有人对如何做到这一点有建议吗?
我在谷歌上搜索过这个,但除了以 10 为基数的里程表外,找不到其他里程表。
“如何在 Java 中以不同的数基递增数组?...”
它不是语法的一部分,您需要实现它。
这里是将 x 转换为 基数 为 r 的示例。
StringBuilder s = new StringBuilder();
int x = 1234, r = 5;
while (x > 0) {
s.append(x % r);
x /= r;
}
s.reverse();
并且,要转换回 10 的 radix,您可以使用 Integer#parseInt 方法。
int x = Integer.parseInt("14414", r);
“...我需要创建一个函数,根据
的数基递增数组。...number_base
...和number_of_slots
应该能够在程序中更改、重新编译并使用更新的参数再次运行。 ...”number_base
我不相信我理解这个抽象。
如果您可以提供更多信息,我很乐意提供帮助。
如果您想将特定radix的两个值相加,可以使用以下内容。
我在这里使用 long 值,您甚至可能想切换到 BigInteger。
String convert(long x, long r) {
StringBuilder s = new StringBuilder();
while (x > 0) {
s.append(x % r);
x /= r;
}
return s.reverse().toString();
}
String add(String a, String b, int r) {
return convert(Long.parseLong(a, r) + Long.parseLong(b, r), r);
}
这是一个示例用法。
long a = 1234, b = 4321, x = a + b;
System.out.printf("%5s + %6s = %6s%n", a, b, x);
String g = convert(1234, 5), h = convert(4321, 5),
i = add(g, h, 5);
System.out.printf("%5s + %6s = %6s%n", g, h, i);
输出
1234 + 4321 = 5555
14414 + 114241 = 134210