我正在研究一个读取包含不正确缩进代码的5个不同文件的程序。我必须编写一个方法,将代码正确缩进并将其打印到控制台和一个新文件,并给定制表符大小以及输入和输出文件的名称作为参数。我的代码到目前为止贯穿并缩进每一行,然后尝试确定何时缩进另一个选项卡或取消缩进。更改文件中的每一行 - Java
public static void justifyJava(String inputFileName, String outputFileName,
int tabSize) throws FileNotFoundException {
String one_tab = "";
for (int i = 0; i < tabSize; i++) {
one_tab += " ";
}
Scanner input = new Scanner(new File (inputFileName));
PrintStream out = new PrintStream (new File (outputFileName));
int lineCount = 0;
while (input.hasNextLine()) {
String line = input.nextLine();
line = one_tab + line.trim();
lineCount++;
if (lineCount == 1){
line = line.substring(tabSize);
}
else if (lineCount == 2){
Scanner lineScan = new Scanner(line);
while (lineScan.hasNext()) {
String token = lineScan.next();
if (token.length() <= 2) {
line = line.substring(tabSize);
}
}
}
else if (line.contains("{") && lineCount > 2){
System.out.println(line);
out.println(line);
line = one_tab + input.nextLine();
while(!(line.contains("}"))){
line = one_tab + line;
System.out.println(line);
out.println(line);
line = input.nextLine();
}
line = one_tab + line;
}
else if (line.contains("}") && input.hasNextLine()){
line = one_tab + line;
}
else if (!(input.hasNextLine())) {
line = line.substring(tabSize);
}
System.out.println(line);
out.println(line);
}
}
这种方式正在成为,因为我有多少的情况下考虑到特别是因为这些文件中的代码中使用不同的花括号风格非常繁琐。基本上我所要做的就是缩进每一行,后面跟着一个选项卡的开启大括号,以及每个按照一个选项卡关闭大括号的每一行。有没有更简单的方法来做到这一点?
每种语言都可能有成千上万的漂亮打印机。所以,除非这是家庭作业/学习练习,否则没有理由这么做......查找工具(如果您的编辑器因为某些原因没有这样的功能)绝对更容易(并且可能更加正确)。 –
完全同意阿列克谢。但如果这不是,请考虑这个 - http://stackoverflow.com/questions/27275272/replacing-tab-characters-in-java-files-with-4-spaces – stdunbar
递归是去这里的路。每当你检测到你不得不深入缩进时,你都会输入递归。 – jcmonteiro