2012-08-05 31 views
2

我的Eclipse發生了一些奇怪的事情,我從未記得以前發生過。基本上,如果我有一個很長的語句並將其分成兩行,那麼之後的所有內容都會縮進一個標籤,而不會超出應有的位置。這裏有一個例子:Eclipse自動縮進錯誤地縮進文件

正確的縮進:

public static class Shape { 

    enum Tetrominoes { NoShape, ZShape, SShape, LineShape, TShape, 
     SquareShape, LShape, MirroredLShape }; 

    private Tetrominoes pieceShape; 
    private int coords[][]; 
    private int[][][] coordsTable; 

    public Shape() { 

     coords = new int[4][2]; 
     setShape(Tetrominoes.NoShape); 
    } 

    public void setShape(Tetrominoes shape) { 

    } 

} 

是什麼樣子用Ctrl + A,按Ctrl + I:

public static class Shape { 

    enum Tetrominoes { NoShape, ZShape, SShape, LineShape, TShape, 
     SquareShape, LShape, MirroredLShape }; 

     private Tetrominoes pieceShape; 
     private int coords[][]; 
     private int[][][] coordsTable; 

     public Shape() { 

      coords = new int[4][2]; 
      setShape(Tetrominoes.NoShape); 
     } 

     public void setShape(Tetrominoes shape) { 

     } 

} 

現在,如果我保持這種枚舉在一行和自動縮進它,然​​後它工作得很好。我剛購買了一臺新筆記本電腦,並在其上放置了新的Eclipse,並且沒有更改任何設置,所以這是默認的自動縮進工作方式。但我記得在我的舊筆記本電腦上,如果我將一個語句分成兩行,那麼之後的所有其他語句仍然會正​​確對齊?我試着編輯這個問題並重新插入它,但是一旦發佈,它仍然被刪除。我試着把「嘿,夥計們」 「但那也被刪除了。難道SO不相信問候嗎?)

回答

2

我能夠重現這個問題。

看來,enum的結束括號是令人困惑的Eclipse。如果你把一個單獨的行縮進開始工作的罰款:

public static class Shape { 

    enum Tetrominoes { NoShape, ZShape, SShape, LineShape, TShape, 
     SquareShape, LShape, MirroredLShape 
    }; 

    private Tetrominoes pieceShape; 
    private int coords[][]; 
    private int[][][] coordsTable; 

    public Shape() { 

     coords = new int[4][2]; 
     setShape(Tetrominoes.NoShape); 
    } 

    public void setShape(Tetrominoes shape) { 

    } 

} 

您也可以嘗試格式化代碼(按Ctrl + Shift + F),然後糾正壓痕(按Ctrl + A和Ctrl + I)。在格式化代碼時,您會注意到Eclipse也將結尾大括號放在下一行,而不是Enum常量體的旁邊。

+0

但事情是,我想分割線,以便我可以保持我的代碼足夠小,以適應一半的屏幕。線分裂不是問題,事實上線分裂後的所有縮進都是。 – ProgrammingMakesMeQQ 2012-08-05 16:51:01

+0

@ProgrammingMakesMeQQ,我上面更新了我的答案。如果你不想改變Line Splitting,可以嘗試將enum的結束大括號放在上面的新行上。 – 2012-08-05 16:52:48

+1

真棒,我們剛剛發現,在同一時間大聲笑。我現在可以做到這一點,但這是奇怪的事情。如果你在多行上初始化一個數組(例如int [] array = {1,1,1,\ n 1,1等});那麼你可以在你的結尾數組初始化和自動縮進工作正常。所以對於一個枚舉來說,你必須把新的大括號放在一個新行上才能使縮進工作正常,但對於一個數組,你不必這樣做。 – ProgrammingMakesMeQQ 2012-08-05 16:57:47