Java:计数器缩进

Java:计数器缩进,java,Java,我对java非常陌生,正在尝试创建一个java应用程序,它(在终端中运行时)将复制其中的文本,如果有卷曲{括号,则添加3个空格,如果有卷曲}括号,则删除3个空格。每次{出现时,应该有一个计数器缩进另外3个空格(参见示例) 示例: File1.txt: 输出应为File2.txt: 我当前输出到File2.txt的是: 我缺少最后一个括号(如何修复此括号?),不知道如何根据计数器循环缩进。请帮助 我当前的代码: import java.io; import java.util.Scanner;

我对java非常陌生,正在尝试创建一个java应用程序,它(在终端中运行时)将复制其中的文本,如果有卷曲{括号,则添加3个空格,如果有卷曲}括号,则删除3个空格。每次{出现时,应该有一个计数器缩进另外3个空格(参见示例)

示例: File1.txt:

输出应为File2.txt:

我当前输出到File2.txt的是:

我缺少最后一个括号(如何修复此括号?),不知道如何根据计数器循环缩进。请帮助

我当前的代码:

import java.io;
import java.util.Scanner;

public class myapp {

    public static void main(String[] argv) throws IOException {

        File InputFile = new File(argv[0]);
        Scanner FileScanner = new Scanner(InputFile);
        FileWriter Writer = new FileWriter(argv[1]);
        BufferedWriter OutputWriter = new BufferedWriter(Writer);

        while (FileScanner.hasNextLine() == true) {
            String a = FileScanner.nextLine();

            try {
                int indent = 0;
                {

                    if (a.contains("{")) {
                        indent++;

                    }

                    for (int i = 0; i < indent; i++) {

                        OutputWriter.write("   ");
                    }
                    OutputWriter.write(a);
                }

                if (a.contains("}")) {
                    indent--;

                }

            } catch (Exception e) {
                System.out.println("Error:" + e.getMessage());
            }
            OutputWriter.write("}");
        }
    }
}

谢谢:)

尝试通过
OutputWriter.close()
关闭方法末尾的
OutputWriter
。它将刷新流,这可能是缺少
}
的原因


对于缩进问题,在循环外部声明并初始化
indent
计数器。否则,每次迭代都会将其重置为0。

试试这个。没关系,我最后添加了
块`

        finally{
            OutputWriter.close();
        }
试试这个:

public static void main(String[] args) throws IOException {
 File InputFile = new File(argv[0]);
 Scanner FileScanner = new Scanner(InputFile);
 FileWriter Writer = new FileWriter(argv[1]);
 BufferedWriter OutputWriter = new BufferedWriter(Writer);
 while (FileScanner.hasNextLine() == true) {
  String a = FileScanner.nextLine();
  String b = "";
  for (int i = 0; i < a.length(); i++) {
   if (a.charAt(i) == '{') {
     b += "\n{\n   ";
   } else if (a.charAt(i) == '}') {
     b += "\n}\n";
   } else {
     b += a.charAt(i);
   }
}
OutputWriter.write(b);
OutputWriter.close();
}}}
publicstaticvoidmain(字符串[]args)引发IOException{
File InputFile=新文件(argv[0]);
Scanner FileScanner=新扫描仪(InputFile);
FileWriter=新的FileWriter(argv[1]);
BufferedWriter OutputWriter=新的BufferedWriter(Writer);
while(FileScanner.hasNextLine()==true){
字符串a=FileScanner.nextLine();
字符串b=“”;
对于(int i=0;i
如何输入:OutputWriter.write(s);?请先正确缩进您自己的代码!我无法在它当前所在的状态下重新读取它。如果您使用的是任何IDE,它可能会有一些您可以使用的自动缩进功能。如果没有,您可以在线使用一堆站点来正确缩进代码。读起来越难,调试起来就越难。这不是你发布的输出的代码。它读取第一行(唯一的一行),然后打印回来,而输出显示多行和多个空格,而代码肯定不会输出您所说的内容。我将第一行输出直接返回到第二个文件中,在开始处有一些空格。我必须添加OutputWriter.close()才能做到这一点。我同意@Piyin的观点,我运行了代码,结果并不是你说的那样。添加真正的代码或真正的输出。谢谢你的回答:)遗憾的是,它似乎不起作用:(相同的输出
import java.io;
import java.util.Scanner;

public class myapp {

    public static void main(String[] argv) throws IOException {

        File InputFile = new File(argv[0]);
        Scanner FileScanner = new Scanner(InputFile);
        FileWriter Writer = new FileWriter(argv[1]);
        BufferedWriter OutputWriter = new BufferedWriter(Writer);

        while (FileScanner.hasNextLine() == true) {
            String a = FileScanner.nextLine();

            try {
                int indent = 0;
                {

                    if (a.contains("{")) {
                        indent++;

                    }

                    for (int i = 0; i < indent; i++) {

                        OutputWriter.write("   ");
                    }
                    OutputWriter.write(a);
                }

                if (a.contains("}")) {
                    indent--;

                }

            } catch (Exception e) {
                System.out.println("Error:" + e.getMessage());
            }
            OutputWriter.write("}");
        }
    }
}
$java myapp File1.txt File2.txt
        finally{
            OutputWriter.close();
        }
public static void main(String[] args) throws IOException {
 File InputFile = new File(argv[0]);
 Scanner FileScanner = new Scanner(InputFile);
 FileWriter Writer = new FileWriter(argv[1]);
 BufferedWriter OutputWriter = new BufferedWriter(Writer);
 while (FileScanner.hasNextLine() == true) {
  String a = FileScanner.nextLine();
  String b = "";
  for (int i = 0; i < a.length(); i++) {
   if (a.charAt(i) == '{') {
     b += "\n{\n   ";
   } else if (a.charAt(i) == '}') {
     b += "\n}\n";
   } else {
     b += a.charAt(i);
   }
}
OutputWriter.write(b);
OutputWriter.close();
}}}