0

重複の可能性:
Java:スキャナーが改行で停止している

私はプログラミングに不慣れで、に新しい行があるかどうかを識別する方法があるかどうか疑問に思っていましたScanner。私の方法ではScanner、テキストファイルを取得し、60文字を超える場合は、単語の途中で分割せずに行を分割することになっています。

私が抱えている問題は、各トークンを使用しているため、コードが60文字未満の行を考慮せず、60文字までの前の行に追加することです。

これは私が作成したメソッドです:

public static void wordWrap3(Scanner s) {
    String k = "";
    int length = 0;
    while(s.hasNext()) {
        k = s.next();
        length = length + k.length() + 1;
        if (length>60) {
            System.out.print("\n");
            length = 0;
        }
        System.out.print(" " + k);
    }
}

これは私が使用しているテキストです:

We're no strangers to love, You know the rules and so do I, 
A full commitment's what Im thinking of, You wouldn't get this from any other guy.
I just wanna tell you how I'm feeling, Gotta make you understand.
Never gonna give you up, Never gonna let you down, Never gonna run around and desert you.
Never gonna make you cry, Never gonna say goodbye, Never gonna tell a lie and hurt you.
4

2 に答える 2

0

あなたが試すことができます:

 String fileLine = "";
 while(s.hasNextLine()) {
     fileLine = s.nextLine();
     if(fileLine.length() > 60 )
     {
         while (fileLine.length() > 60)
         {
             String tempStr = fileLine.substring(0, 60);
             int rightIdx = tempStr.lastIndexOf(' ');
             String firstStr = tempStr.substring(0, rightIdx);
             String secStr = fileLine.substring(rightIdx + 1, fileLine.length());
             System.out.println(firstStr);
             //if still it is big
             if(secStr.length() > 60)
                 fileLine = secStr;
             else
             {
                 System.out.println(secStr);
                 break;
             }
         }
     }
     else
     {
         System.out.println(fileLine);
     }
 }

もちろん、それはさらに改善することができます。

于 2012-12-05T07:59:43.857 に答える
0

各行を個別にワードラップしたいと言っているようです。その場合、簡単な解決策は、入力を行に分割し、各行のスキャナーを作成して、それを既存のwordWrap3メソッドに渡すことです。

于 2012-12-05T07:18:47.320 に答える