繁体   English   中英

输出未正确输出

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM