-1
我正在寫一個java反編譯器。爲了給輸出一個很好的縮進,我決定編寫一個名爲TabbedPrintWriter
的類來自動將輸出合理地分類。下面的代碼:爲什麼我的TabbedPrintWriter不工作?
import java.io.OutputStream;
import java.io.PrintWriter;
public class TabbedPrintWriter extends PrintWriter {
private static int indentAmount = 4;
private int indent = 0;
public TabbedPrintWriter(OutputStream out) {
super(out);
}
public TabbedPrintWriter(OutputStream out, boolean autoFlush) {
super(out, autoFlush);
}
@Override
public void println() {
super.println();
for (int i = 0; i <= indentAmount * indent; i++) {
super.write(' ');
}
}
public void indent() {
indent++;
}
public void unindent() {
indent--;
}
}
我也寫了一個測試類測試:
public class TabbedPrintWriterTest {
public static void main(String[] args) {
TabbedPrintWriter writer = new TabbedPrintWriter(System.out, true);
writer.println("Hello");
writer.indent();
writer.println("Goodbye");
}
}
如果你在看代碼,每個縮進級別應該是四個空格。然而,如果我運行這個,我得到這個輸出:
Hello
Goodbye
是的,沒錯。只有一個空間。
這是爲什麼?
你並沒有壓倒一切的關鍵方法。你檢查了API嗎?源代碼? *空格寫出後,不應該調用超級方法* 如果打印多次被調用,然後打印println,你的行動計劃是什麼?你打算在調用print(...)'方法之前選擇tab嗎? –
@HovercraftFullOfEels刪除。你的答案已經過去了。我在讀它。 – tbodt
我刪除了我的答案,因爲它聞起來更像一條評論。 –