2017-07-22 7 views
0

ファイルからの入力を受け入れ、変数の列幅にラップするコードを作成しようとしています。空白を区切り文字として使用し、行の長さが列の幅を超えると、文字列の単語をファイルに出力し、新しい行を開始します。私のループには論理エラーがあり、行ごとに2ワードしか印刷されず、行の2番目の単語が後続の行の最初の単語になります。ここに私のコードは、これまでのところです:JavaでhasNextを使用して可変長のワードラップを作成する

StringBuilder line = new StringBuilder(); 
    while (reader.hasNext()) {   
     String word = (reader.next() + " ");    
     int length = line.length();   
     if (length <= width)     
     line.append(word); 
     outputStream.println(line); 
     line.delete(0, length); 
    } 

答えて

0

仮定:入力が

StringBuilder line = new StringBuilder(); 
while (reader.hasNext()) {   
    String word = (reader.next() + " ");    
    int length = line.length() + word.length();   
    if (length <= width) {    
    line.append(word); 
    continue; 
    } 
    outputStream.println(line); 
    line.setLength(0) 
    line.append(word); 
} 
if(line.length() > 0){ 
outputStream.print(line); 
} 
+0

それは本当だ言及した列の幅以下の長さを持っている中で(「」を含む)すべての単語 - supercalifragilisticexpialidociousは投げるだろうし例外。 作業中です - ありがとうございました! –

関連する問題