我正在研究一個讀取包含不正確縮進代碼的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