我正在尝试实现一个带有一串文本和一列的方法 width并输出文本,每行限于列宽。
public void wrapText(String text, int width)
{
System.out.println(text);
}
例如,使用文本调用方法:
Triometric creates unique end user monitoring products for high-value Web applications, and offers unrivalled expertise in performance consulting.列宽为20的
将导致以下输出:
Triometric creates unique end user monitoring products for high-value Web applications, and offers unrivalled expertise in performance consulting.
答案 0 :(得分:3)
您可以尝试这样的事情:
public static void wrapText(String text, int width) {
int count = 0;
for (String word : text.split("\\s+")) {
if (count + word.length() >= width) {
System.out.println();
count = 0;
}
System.out.print(word);
System.out.print(' ');
count += word.length() + 1;
}
}
虽然仍然存在方法结果不明确的情况(例如,如果单个单词的长度大于width
)。上面的代码只会在自己的行上打印出这样的单词。
答案 1 :(得分:0)
我会通过在whitelines处拆分String然后逐字打印来实现,如下所示:
public static void wrapText(String text, int width) throws Exception {
String[] words = text.split(" ");
int acsize = 0;
for (String word : words) {
if (word.length() > width) {
throw new Exception("Word longer than with!");
}
if (acsize + word.length() <= width) {
System.out.print(word + " ");
acsize += word.length() + 1;
} else {
System.out.println();
System.out.print(word + " ");
acsize = word.length() + 1;
}
}
}
如果你想要打印长于宽度的单词,可以删除异常,就像你在上次评论中所说的那样。