gpt4 book ai didi

java - 如何在 Java 中进行循环?

转载 作者:行者123 更新时间:2023-12-03 21:37:57 24 4
gpt4 key购买 nike

我想对以下元素进行循环:

[1,2,11,12,21,22,111,112,121,122,....,222222]

或者例如

[1,2,3,11,12,13,21,22,23,31,32,33,111,112,113,... 333333333]

我如何用 Java 制作它?在我的特殊情况下,我使用 4 位数字 (1、2、3、4),最后一个数字的长度可以从 1 到 10。

我设法用 Python 和 PHP 做到了。在第一种情况下,我使用了 list over lists。我从 [[1],[2],] 开始,然后为列表的每个元素添加 1 和 2,所以我得到 [[1,1],[1,2],[2,1],[2 ,2]] 等等:

nchips = sum(chips)
traj = [[]]
last = [[]]
while len(last[0]) < nchips:
newlast = []
for tr in last:
for d in [1,2,3,4]:
newlast.append(tr + [d])
last = newlast
traj += last

当我在 PHP 中这样做时,我使用了基数为 3 的数字。但这是一个棘手且不优雅的解决方案。

    for ($i=-1; $i<=$n; $i+=1) {

if ($i>-1) {
$n5 = base_convert($i,10,5);
$n5_str = strval($n5);
$tr = array();
$found = 0;
for ($j=0; $j<strlen($n5_str); $j+=1) {
$k = $n5_str[$j];
if ($k==0) {
$found = 1;
break;
}
array_push($tr,$k);
}
if ($found==1)
continue;
} else {
$tr = array();
}
}

用 Java 可以轻松完成吗?

最佳答案

这看起来很像在给定基数中计算数字。 (示例以 2 和 3 为基数)您可以使用 Integer.toString 轻松地将整数转换为给定基数的字符串,并将该字符串的字符映射到符号。示例:

Integer.toString(6, 2) -> "011"

将此字符串映射到一个字符数组,然后将该数组映射到您的符号。在您的情况下,这将是:“0”-> 1 和“1”-> 2。

这不是最有效的解决方案,但它让 Integer.toString 完成脏活,让您进行简单的数组转换。

要进行相反的转换,您可以将数组转换为字符串,然后使用 Integer.parseInt 再次提取 int 表示形式。

如果您需要执行算术运算(我猜主要是++ 和 -- 用于循环的前一个和下一个元素),请对整数执行这些运算并根据需要来回转换。

免责声明:我已经有一段时间没有用 java 编写代码了,所以方法和类名可能不对。

编辑:如果您需要的符号多于 32 位和 64 位整数所能容纳的符号,您始终可以使用 big int。

评论回复:

正如人们评论的那样,这种方法在前导零方面存在问题。显而易见的解决方案是在转换为字符串之前将一些值 N^(n+1) 添加到整数表示形式,其中 N 是基数,n 是符号数。这将产生将 1、1、2 转换为 1001 而不是 001 的效果,有效地允许零。

但这有一个缺点,即成为一个过于复杂的解决方案,以至于无法真正成为最初预期的简单解决方案。

关于java - 如何在 Java 中进行循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2507828/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com