質問: 入力ファイルを表す Scanner をパラメーターとして受け取り、60 文字を超えるすべての行をワードラップして、ファイルの各行をコンソールに出力する wordWrap というメソッドを作成してください。たとえば、1 行に 112 文字が含まれる場合、メソッドはそれを 2 行に置き換える必要があります。1 行には最初の 60 文字が含まれ、もう 1 行には最後の 52 文字が含まれます。217 文字を含む行は、長さ 60 の 3 行と長さ 37 の最後の行の 4 行に折り返す必要があります。
私のコード:
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();
}
}
}
出力の問題:
期待される出力:
こんにちは 大丈夫 素早い茶色のキツネは怠惰な犬の素早い茶色を飛び越える キツネが怠け者の犬を飛び越える 私は元気です ありがとうございました 素早い茶色のキツネは怠惰な犬の素早い茶色を飛び越える キツネが怠け者の犬を飛び越える 素早い茶色のキツネは怠惰な犬の素早い茶色を飛び越える キツネが怠け者の犬を飛び越える 素早い茶色のキツネは怠惰な犬の素早い茶色を飛び越える キツネが怠け者の犬を飛び越える 素早い茶色のキツネは怠惰な犬の素早い茶色を飛び越える キツネが怠け者の犬を飛び越える 素早い茶色のキツネは怠惰な犬の素早い茶色を飛び越える キツネが怠け者の犬を飛び越える この行の長さはちょうど 60 文字です。なんて面白い! さようなら
生成された出力:
こんにちは 大丈夫 素早い茶色のキツネは怠惰な犬の素早い茶色を飛び越える キツネが怠け者の犬を飛び越える 私は元気です ありがとうございました 素早い茶色のキツネは怠惰な犬の素早い茶色を飛び越える キツネが怠け者の犬を飛び越える 素早い茶色のキツネは怠惰な犬の素早い茶色を飛び越える キツネが怠け者の犬を飛び越える 素早い茶色のキツネは怠惰な犬の素早い茶色を飛び越える キツネが怠け者の犬を飛び越える 素早い茶色のキツネは怠惰な犬の素早い茶色を飛び越える キツネが怠け者の犬を飛び越える 素早い茶色のキツネは怠惰な犬の素早い茶色を飛び越える キツネが怠け者の犬を飛び越える この行の長さはちょうど 60 文字です。なんと興味深いことでしょう! この行はちょうど 60 文字の長さです。なんと興味深いことでしょう! この行はちょうど 60 文字の長さです。なんて面白い!... *** エラー: 13 行目の過剰な出力
どこで間違ったのですか????