[英]Output is not coming out correctly
这段代码的目的是读取一个文件,并在每个{(括号)的末尾添加数字,但该文件不会像在文件中那样输出每一行,但会将其放在一行中。 我在哪里放置System.out.println语句。 我尝试了所有地方,并且不断重复
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Test {
public static void main(String args[]) {
readFile();
}
public static void readFile() { // Method to read file
Scanner inFile = null;
String out = " ";
try {
Scanner input = new Scanner(System.in);
System.out.println("enter file name");
String filename = input.next();
File in = new File(filename); // ask for the file name
inFile = new Scanner(in);
int count = 0;
while (inFile.hasNextLine()) { // reads each line
String line = inFile.nextLine();
for (int i = 0; i < line.length(); i++) {
char ch = line.charAt(i);
out = out + ch;
if (ch == '{') {
count = count + 1;
out = out + " " + count + " ";
} else if (ch == '}') {
out = out + " " + count + " ";
if (count > 0) {
count = count - 1;
}
}
}
}
System.out.println(out);
} catch (FileNotFoundException exception) {
System.out.println("File not found.");
}
inFile.close();
}
}
我在哪里放置System.out.println语句
整个输出都构建在单个字符串中,直到最后才打印出来,因此在行循环中添加System.out.println语句将无济于事。 您可以通过以下方式在字符串中添加换行符:
out += "\n";
或者,在循环行主体的末尾,打印当前行,然后为下一行重置缓冲区:
System.out.println(out);
out = "";
顺便说一句,使用字符串作为输出缓冲区效率不高。 字符串是不可变的,因此每次+
语句都会复制并复制所有先前的字符,以每次创建一个新对象。 考虑宣布out
作为一个StringBuilder的 ,而不是一个字符串。 然后,您可以使用.append()
方法添加到其中,由于StringBuilder是可变的,因此它不会每次都复制所有文本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.