gpt4 book ai didi

java - 这是重复局部变量问题的优雅解决方案吗?

转载 作者:行者123 更新时间:2023-12-01 06:59:03 25 4
gpt4 key购买 nike

Integer[] lastExchange = new Integer[nColors];
Integer[] exchangeToAdd = new Integer[nColors];
lastExchange = getValue();
exchangeToAdd = getValue();
exchanges.add(exchangeToAdd);

Integer[] newExchange = new Integer[nColors];
while (true) {
newExchange = getValue(lastExchange);
Integer[] exchangeToAddForLoop = new Integer[nColors];
for (int i=0; i<nColors; i++) {
lastExchange[i] = newExchange[i];
exchangeToAddForLoop[i] = newExchange[i];
}
exchanges.add(exchangeToAddForLoop);
}

已添加

我想用这段代码做什么?我需要填充(填写)名为 exchanges 的列表。列表的第一个元素是lastExchange。我的代码问题是我总是需要创建一个变量的两个副本(这就是为什么我认为代码不优雅但我找不到更好的解决方案)。例如,一开始我创建 lastExchange,然后创建 exchangeToAdd(与 lastExchange 具有相同的值)。循环中也会发生同样的情况。我创建 lastExchange,然后创建 exchangeToAddForLoop。我这样做是因为我无法将 lastExchange 添加到列表中,因为它稍后会被修改。

添加2

这是我的问题。我有这样的代码:

Integer[] e  = getValue();
Integer[] e1 = getValue(); // <-- I do not like that.
exchanges.add(e1); // <-- I do not like that.
while (true) {
Integer[] e_new = getValue(e);
Integer[] e2 = new Integer[nColors]; // <-- I do not like that.
for (int i=0; i<nColors; i++) {
e[i] = e_new[i];
e2[i] = e_new[i]; // <-- I do not like that.
}
exchanges.add(e2); // <-- I do not like that.
}

除了计算e之外,我还需要计算e1e2

最佳答案

这至少在两个方面是不优雅的代码:

  • 大多数局部变量都会被赋值,然后立即被覆盖
  • 您的 newExchange 变量可以声明为更深层次的嵌套。

因此,在不改变任何行为的情况下,这是一个更好的版本:

Integer[] lastExchange = getValue();
Integer[] exchangeToAdd = getValue();
exchanges.add(exchangeToAdd);

while (true) {
Integer[] newExchange = getValue(lastExchange);
Integer[] exchangeToAddForLoop = new Integer[nColors];
for (int i=0; i<nColors; i++) {
lastExchange[i] = newExchange[i];
exchangeToAddForLoop[i] = newExchange[i];
}
exchanges.add(exchangeToAddForLoop);
}

接下来我们遇到的问题是,您没有告诉我们这些代码的用途,也没有告诉我们“重复的局部变量问题”的含义。哦,正如评论中指出的,你的循环永远不会终止。

关于java - 这是重复局部变量问题的优雅解决方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4344883/

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