字符串串联不起作用

问题描述:

这是我第一次发布问题。希望,我会保持活跃,因为编码是我爱的东西。 刚刚开始尝试使用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中。但是,文本有数据,这证明我的文本文件正在被读取。 我在这里做什么错?

您将字符串追加到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); 

您应该将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()); 

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的一个示例文件,内容如下: 我在现在的大学嗨, 让我们看看我们是否可以连接的内容或不:-)

这似乎是工作。

谢谢