字符串串联不起作用
问题描述:
这是我第一次发布问题。希望,我会保持活跃,因为编码是我爱的东西。 刚刚开始尝试使用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的一个示例文件,内容如下: 我在现在的大学嗨, 让我们看看我们是否可以连接的内容或不:-)
这似乎是工作。
谢谢