我在尝试返回我的Register类中的所有值时遇到麻烦。当前,它仅返回BLOGGS,J,但也应返回JONES,F和SINGH,N。预先谢谢你。
public static String execute(Register reg, Name n) {
reg.removeName(1);
reg.addName(n);
for (Name nm : reg) {
if(nm.getFamilyName().length() >= 5) {
return (nm.getFamilyName().toUpperCase() + ", " + nm.getFirstName().charAt(0) + "\n");
}
return null;
}
}
这是jUnit测试的测试代码
@Test
public void testExecute() {
Register r = new Register();
r.addName(new Name("Joe", "Bloggs"));
r.addName(new Name("Fred", "Jones"));
r.addName(new Name("Nila", "Singh"));
String result = RegisterApp.execute(r, new Name("Cassie", "Downturn"));
String expectedResult = "BLOGGS, J\nSINGH, N\nDOWNTURN, C\n";
assertEquals("The string returned should match the expected result (run 1)", expectedResult, result);
}
答案 0 :(得分:0)
@Carcigenicate已经喊出,您正要从for循环中返回。
您可以在此处利用流api:
public static String execute(Register reg, Name n) {
reg.removeName(1);
reg.addName(n);
return
reg.stream()
.filter(nm -> nm.getFamilyName().length() >= 5)
.map(nm -> nm.getFamilyName().toUpperCase() + ", " + nm.getFirstName().charAt(0) + "\n")
.collect(Collectors.joining());
}