2017-04-23 165 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 textData=new String();創建的空String的內容,因爲String是不可變的類。

變化

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

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

BTW,它可能會更有意義,取消textData變量,並有StringBuilder變量,而不是。這樣您就不必在循環的每次迭代中創建新的StringBuilder。並且在任何時候您都可以獲得StringBuilder的當前內容的String表示形式。

StringBuilder sb=new StringBuilder(); 

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

System.out.println(sb); 
1

您應該將StringBuilder初始化爲while循環,然後將值附加到循環中。在你的代碼中,StringBuilder每次都會重置。試試這個:

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(); 
    } 
}} 

試試這個代碼,我創建了一個名爲Sample.txt的一個示例文件,內容如下: 我在現在的大學嗨, 讓我們看看我們是否可以連接的內容或不:-)

這似乎是工作。

謝謝