1

質問: 入力ファイルを表す 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 行目の過剰な出力

どこで間違ったのですか????

4

1 に答える 1

0

このelse条件(正確に60文字の行の場合)では、内側のforループから抜けるだけですが、外側のwhileループから抜けたい(したがって、同じ行を60回書き出すことになります)。

代わりにbreak superOuter、59文字未満の行の場合と同じように使用します。

于 2012-05-14T10:04:41.400 に答える