【发布时间】:2012-05-21 19:11:38
【问题描述】:
问题:编写一个名为 wordWrap 的方法,该方法接受一个代表输入文件的 Scanner 作为其参数,并将文件的每一行输出到控制台,对所有长度超过 60 个字符的行进行自动换行。例如,如果一行包含 112 个字符,则该方法应将其替换为两行:一行包含前 60 个字符,另一行包含最后 52 个字符。包含 217 个字符的行应分成四行:长度为 60 的三行和长度为 37 的最后一行。
我的代码:
public void wordWrap(Scanner input) {
while(input.hasNextLine()){
String line=input.nextLine();
Scanner scan=new Scanner(line);
if(scan.hasNext()){
superOuter:
while(line.length()>0){
for(int i=0;i<line.length();i++){
if( i<60 && line.length()>59){
System.out.print(line.charAt(i));
}
//FINISH OFF LINE<=60 characters here
else if(line.length()<59){
for(int j=0;j<line.length();j++){
System.out.print(line.charAt(j));
}
System.out.println();
break superOuter;
}
else{
System.out.println();
line=line.substring(i);
break ;
}
}
}
}
else{
System.out.println();
}
}
}
输出中的问题:
预期输出:
你好 你好吗 敏捷的棕色狐狸跳过懒惰的狗 敏捷的棕色 狐狸跳过懒狗 我很好 谢谢 敏捷的棕色狐狸跳过懒惰的狗 敏捷的棕色 狐狸跳过懒狗 敏捷的棕色狐狸跳过懒惰的狗 敏捷的棕色 狐狸跳过懒狗 敏捷的棕色狐狸跳过懒惰的狗 敏捷的棕色 狐狸跳过懒狗 敏捷的棕色狐狸跳过懒惰的狗 敏捷的棕色 狐狸跳过懒狗 敏捷的棕色狐狸跳过懒惰的狗 敏捷的棕色 狐狸跳过懒狗 这一行正好有六十个字符长;很有意思! 再见产生的输出:
你好 你好吗 敏捷的棕色狐狸跳过懒惰的狗 敏捷的棕色 狐狸跳过懒狗 我很好 谢谢 敏捷的棕色狐狸跳过懒惰的狗 敏捷的棕色 狐狸跳过懒狗 敏捷的棕色狐狸跳过懒惰的狗 敏捷的棕色 狐狸跳过懒狗 敏捷的棕色狐狸跳过懒惰的狗 敏捷的棕色 狐狸跳过懒狗 敏捷的棕色狐狸跳过懒惰的狗 敏捷的棕色 狐狸跳过懒狗 敏捷的棕色狐狸跳过懒惰的狗 敏捷的棕色 狐狸跳过懒狗 这一行正好有六十个字符长;多么有趣!这一行正好有六十个字符;多么有趣!这一行正好有六十个字符;很有意思!... *** 错误:第 13 行输出过多我哪里做错了???
【问题讨论】:
-
循环输入的行(扫描仪)不是更容易吗,检查它是否超过 60 个字符,打印前 60 个(或更少),从 char 60 中获取子字符串到最后,然后重复直到长度为 0?
标签: java