【问题标题】:Eclipse auto-indent incorrectly indents fileEclipse 自动缩进错误地缩进文件
【发布时间】:2012-08-05 16:23:00
【问题描述】:

我的 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 副本,没有更改任何设置,所以这就是默认自动缩进的工作方式。但是我记得在我的旧笔记本电脑上,如果我将一个语句分成两行,那么之后的所有其他内容仍然会正确对齐吗?

(同样在这篇文章的开头,我输入了“嘿,伙计们”,但看起来 StackOverflow 自动删除了它?我尝试编辑问题并重新插入它,但发布后它仍然被删除。我尝试输入“嘿”但这也被删除了。难道不相信问候吗??)

【问题讨论】:

    标签: java eclipse indentation auto-indent


    【解决方案1】:

    我能够重现该问题。

    枚举的结尾括号似乎使 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 常量主体旁边。

    【讨论】:

    • 但问题是,我希望将行拆分,这样我的代码就可以足够小以适合一半的屏幕。分行不是问题,事实上,分行之后的所有缩进都搞砸了。
    • @ProgrammingMakesMeQQ,我已经更新了上面的答案。如果您不想更改行拆分,请尝试将枚举的结束大括号放在新行上,如上。
    • 太棒了,我们刚刚同时发现了这一点,哈哈。我想我现在可以这样做,但奇怪的是。如果您要在多行上初始化一个数组(例如 int[] array = { 1, 1, 1, \n 1, 1 etc.};),那么您可以将结尾大括号与您的结尾放在同一行数组初始化和自动缩进工作正常。所以奇怪的是,对于枚举,您必须将右大括号放在新行上才能使缩进正常工作,但对于数组,您不必这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多