这是我第一次发帖提问。希望,我会保持活跃,因为编码是我喜欢的。 刚刚开始尝试使用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。但是,文本有数据,证明我的文本文件正在被读取。 我在这里做错了什么?
答案 0 :(得分:2)
将字符串附加到StringBuilder
实例,然后对其执行任何操作。您在代码中所做的任何事情都无法改变由String
创建的空String textData=new String();
的内容,因为String
是一个不可变的类。
更改
new StringBuilder().append(textData).append(text).toString();
到
textData = new StringBuilder().append(textData).append(text).toString();
顺便说一句,取消textData
变量可能更有意义,而改为StringBuilder
变量。这样,您就不必在循环的每次迭代中创建新的StringBuilder
。您可以随时获取String
当前内容的StringBuilder
表示。
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 :(得分:1)
您应该从while循环中初始化StringBuilder,然后在循环中向其追加值。在您的代码中,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());
答案 2 :(得分: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的示例文件,其中包含以下内容: 嗨,我现在在大学, 让我们看看我们是否可以连接内容: - )
这似乎有效。
由于