for 循环在 i++ 处"dead code"


public String toString() {
for(int i = 0; i<items.length; i++) { //i++ is considered "dead code"
return "Name: " + items[i].getName() + ", Is carn? " + items[i].getVeg() + ", Pop: " + items[i].getPop();
}
return null;
}

此方法应遍历数组并返回名称、veg 和 pop。 适用于项目[0],但不适用于更远。

你的 for 循环与:

int i = 0:
while (i < items.length) {
return "Name: " /* etc */;
i++; // Update.
}

如果进入循环,则开始执行正文,然后返回,因此永远不会执行更新。

如果不进入循环,则不会执行更新。

因此,您不执行更新,因此更新是死代码。

i++ 应该在第一次和后续迭代后运行,因为代码在第一次迭代本身中没有任何条件返回 i++ 永远不会到达。

这被认为是"死代码",因为 return 语句将结束函数,因此让 for 循环只打印行,然后函数在循环后停止执行。

或者,如果你想使用这里制作的行来做某事,用它们做一个字符串数组并返回

是的,您可能对return语句的作用感到困惑。我认为您正在尝试执行以下操作:

public String toString() {
final StringBuilder result = new StringBuilder();
for(int i = 0; i<items.length; i++) {
result.append("Name: ").append(items[i].getName())
.append(", Is carn? ").append(items[i].getVeg())
.append(", Pop: ").append(items[i].getPop())
.append("n");
}
return result.toString();
}

return语句正是这样做的:它立即从方法返回并返回结果(如果是void方法,则不返回任何结果(。它不会以某种方式神奇地附加到您的预期结果中;你必须自己做。

返回数组或列表。此外,最好在Item类中toString方法(如果您已经有toString,则print(。我会这样做。

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class Demo {
private Item[] items;
class Item {
private String name;
private boolean veg;
private String pop;
/* Constructor, getters and setters */
@Override
public String toString() {
return "Name: " + name + ", Is carn? " + veg + ", Pop: " + pop;
}
}
public List<String> listItemsString() {
return Stream.of(items).map(Item::toString).collect(Collectors.toList());
}
public String[] arrayItemsString() {
return Stream.of(items).map(Item::toString).toArray(String[]::new);
}
}

相关内容

  • 没有找到相关文章

最新更新