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]项但不能进一步使用。
答案 0 :(得分:1)
你的for循环与:
相同int i = 0:
while (i < items.length) {
return "Name: " /* etc */;
i++; // Update.
}
如果你进入循环,你开始执行正文,然后返回,所以你永远不会执行更新。
如果您不进入循环,则不执行更新。
因此您不执行更新,因此更新是死代码。
答案 1 :(得分:1)
i ++应该在第一次和后续迭代之后运行,因为代码在第一次迭代中没有任何条件返回,我将永远无法达到。+ / p>
答案 2 :(得分:0)
这被认为是“死代码”,因为return语句将结束函数,所以让for循环只打印行,然后函数停止循环后执行。
或者,如果你想在这里使用这里的线条,从它们中创建一个字符串数组并返回它
答案 3 :(得分:0)
是的,您可能对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
方法,则返回结果)。它并没有以某种方式神奇地附加到你的预期结果;你自己必须这样做。
答案 4 :(得分:0)
返回一个数组或一个List。另外,最好在toString
课程中制作方法print
(或toString
,如果您已有Item
)。我会这样做。
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);
}
}