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

标签 java variables duplicates local-variables

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/

相关文章:

java - BorderLayout 的作用类似于流式布局

python - 搜索多个目录,删除重复文件

jquery - JavaScript/jQuery 在两个函数中使用一个变量的最佳解决方案?例子

我们可以在 C 中的 printf 中对多个格式描述符只使用一个变量吗?

bash - 将前导零添加到 awk 变量

r - 使用 R,如何在数据帧的单列中标记连续的重复值

python - 假设多对多关系(sqlalchemy,python),如何避免添加重复项?

java - XPath通过类名查找子节点

Java:当我插入带有头虚拟节点的循环双向链表时,我的虚拟节点会被打乱。为什么?

java - "extends"和 "super"的泛型通配符