2017-04-23 6 views
1

質問を投稿するのは初めてです。希望は、コーディングは私が好きなものなので、私は活発にしていきます。 ちょうどJavaで実験を始めました。私は、テキストファイルを読み込み、別の場所でそれを印刷しようとしています文字列連結が機能しない

String textData=new String(); 

     while (scanFile.hasNext()) { 
      String text = scanFile.next(); 
      System.out.println(text); 
      new StringBuilder().append(textData).append(text).toString(); 
      System.out.println(textData); 
     } 

     System.out.println(textData); 

は、コードのこのスニペットを手に入れました。これは私が書いている大きなプログラムのスニペットです。 ここでは、何もtextDataに連結されません。ただし、テキストにはデータがあり、テキストファイルが読み取られていることが証明されます。 私はここで何をしていますか?

答えて

2

StringBuilderインスタンスに文字列を追加してから、何も実行しません。とにかく、Stringが不変クラスであるため、あなたのコードで何も何も空の内容を変更することはできません。StringString textData=new String();によって作成されます。

変更

new StringBuilder().append(textData).append(text).toString(); 

textData = new StringBuilder().append(textData).append(text).toString(); 

にところで、それはtextData変数をキャンセルする方が理にかなっているかもしれないし、代わりにStringBuilder変数を持っています。この方法では、ループの各反復で新しいStringBuilderを作成する必要はありません。そしていつでも、StringBuilderの現在の内容のString表現を得ることができます。

1

StringBuilderをwhileループから初期化し、ループ内で値を追加する必要があります。あなたのコードでは、毎回StringBuilderがリセットされます。私は、次の内容のSample.txtをというサンプルファイルを作成し、このコードを試してみてください

StringBuilder sb = new StringBuilder(); 

    while (scanFile.hasNext()) { 
     String text = scanFile.next(); 
     System.out.println(text); 
     sb.append(textData).append(text).toString(); 
    } 

    System.out.println(sb.toString()); 
0
import java.io.File; 
import java.io.FileNotFoundException; 
import java.util.Scanner; 

public class Test { 
public static void main(String[] args) { 
    StringBuilder textData = new StringBuilder(); 

    File file = new File("Sample.txt"); 
    Scanner fInput; 
    try { 
     fInput = new Scanner(file); 
     while (fInput.hasNext()) { 
      textData.append(fInput.nextLine()); 
     } 
     System.out.println(textData); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } 
}} 

:これを試してみてください こんにちは、私は今、大学で午前、 は、私たちがコンテンツを連結たりすることはできませんかどうかを確認できます:-)

これは動作しているようです。

ありがとうございました