0

此代码的目标是读取文件并在每个 {(大括号)的末尾添加数字,但文件不会像在文件中那样输出每一行,而是将其放入整行中。我在哪里放置 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();
}
}
4

1 回答 1

0

我在哪里放置 System.out.println 语句

整个输出建立在一个直到最后才打印的单个字符串中,因此在行循环中添加 System.out.println 语句将无济于事。您可以通过执行以下操作向字符串添加换行符:

out += "\n";

或者,在行循环体的末尾,打印当前行,并为下一行重置缓冲区:

System.out.println(out);
out = "";

顺便说一句,使用字符串作为输出缓冲区效率不高。字符串是不可变的,因此每条+语句每次都在复制和复制所有先前的字符以创建一个新对象。考虑声明outStringBuilder而不是 String。然后您可以使用该.append()方法添加它,它不会每次都复制所有文本,因为 StringBuilder 是可变的。

于 2013-10-26T15:57:53.737 回答