当您看到{或}时,如何修复文本文件的缩进?

时间:2016-05-31 23:51:31

标签: java file if-statement while-loop

我的代码采用一个包含代码的文本文件,当它看到{时,它会将缩进增加4并且当它看到}时,它会将缩进减少4个。我遇到的问题是当双重时括号pops(}}或{{)或当一行有两个();我无法成功地将它们分开并在下一行打印出正确的缩进。

public static void face (Scanner File){
      int spacect = 0;
      while (File.hasNextLine()) {
        String w = File.nextLine();
        String a = w.trim();
        if(a.contains(})){
            spacect-=4;
        }
        for(int i=0;i<spacect;i++){
            System.out.print(space);
        }   
        if(a.contains({)){
            spacect+=4;
        }
} 

<小时/> 示例文件输入将是:

public static void sound (String t, PrintStream output){
Scanner d = new Scanner(t);
if(d.hasNext())
{
output.print(d.hasNext());
while (d.hasNext()){
                output.print(" " + d.next();}}
        output.println(); d.close();
        }

正确的输出应该是:

public static void sound (String t, PrintStream output){
    Scanner d = new Scanner(t);
    if(d.hasNext()){
        output.print(d.hasNext());
        while (d.hasNext()){
            output.print(" " + d.next();
        }
    }
    output.println(); 
    d.close();
 }

1 个答案:

答案 0 :(得分:0)

您的问题是您使用String.contains("{"){{。如果您的字符串包含{,则其字符串只会与}}相同,而}String.contains()则相同。这是因为true只是告诉你是否包含该字符。如果角色重复,它仍然只是说{。因此,如果一行上有多个括号,那么您当前的代码不知道。

每次看到}或{{1}}时,您都需要执行类似迭代字符串和更改缩进级别的操作。