移除多余行分隔符:解决JUnit测试持续失败问题
解决JUnit测试中生成文本末尾多余空行的问题
你的代码在每一行结束后都会添加换行符,包括最后一行,导致生成的字符串末尾多了一个空行,这就是JUnit测试失败的核心原因。
修复方案1:修改循环逻辑,仅在非最后一行添加换行
public static String getRectangle(int maxRows, int maxCols, char symbol) { if (maxRows < 1 || maxCols < 1 ) { return null; } StringBuilder rectangle = new StringBuilder(); for (int i = 0; i < maxRows; i++) { for (int j = 0; j < maxCols; j++) { rectangle.append(symbol); } // 仅当不是最后一行时,添加换行符 if (i != maxRows - 1) { rectangle.append(System.lineSeparator()); } } return rectangle.toString(); }
修复方案2:使用String.join简化实现(更简洁)
这种方式利用字符串连接方法自动处理分隔符,避免手动判断:
import java.util.Collections; public static String getRectangle(int maxRows, int maxCols, char symbol) { if (maxRows < 1 || maxCols < 1 ) { return null; } // 生成单一行的字符串 String singleRow = String.valueOf(symbol).repeat(maxCols); // 用换行符拼接所有行,不会在末尾添加多余换行 return String.join(System.lineSeparator(), Collections.nCopies(maxRows, singleRow)); }
其他模块如果是类似的「循环添加分隔符导致末尾多余字符」的问题,都可以套用这个思路:只在元素之间添加分隔符,而非每个元素之后都添加。
内容的提问来源于stack exchange,提问作者TheBigSneeze
相关产品推荐
相关产品推荐

