1

我正在使用格式不正确的现有代码。Eclipse 格式化程序格式化失败,我是配置格式化程序的新手。因此,经过一段时间的尝试,我失败了。内置模板不起作用。无论如何,我想使用 Eclipse Formatter,而不是插件。

我想获得以下代码...

/** Class A
  */
public class A
{  
    /** An int */
    int i;

    /** An A */
    A(int i)
    {  this.i = i;
    }

    /** Gets i */
    int getI()
    {   int b = i *2;
        if(check())
        {   try { doIt(); } catch (Exception e) {doIt();}
            if (check())
            {   if (check()) doIt();
                else return i;
            }
        }
        return b;
    }

    private void doIt() {}

    private boolean check() {return false;}
}

...格式化为...

/** 
 * Class A
 */
public class A {  

    /** 
     * An int 
     */
    int i;

    /** 
     * An A 
     */
    A(int i){  
        this.i = i;
    }

    /** 
     * Gets i 
     */
    int getI(){ 
        int b = i *2;
        if(check()){    
            try { 
                doIt(); 
            } catch (Exception e) {
                doIt();
            }
            if (check()){
                if (check()){
                    doIt();
                }else{
                    return i;
                }
            }
        }
        return b;
   }

    private void doIt() {}

    private boolean check() {return false;}

}

有没有办法配置格式化程序来处理我的问题?

任何帮助都非常感谢,因为它有很多代码:-)

4

5 回答 5

3

首先,您的代码不可编译。您首先需要修复编译错误,然后 Eclipse 将不再无法按照您期望的方式格式化代码。

于 2013-01-18T14:45:49.357 回答
2

在 Window / Preferences 中:检查 Java / Code Style / Formatter。然后“编辑”活动配置文件。

然后寻找“大括号”选项卡。例如,您可以在那里将方法、构造函数等配置为“在同一行”。

于 2013-01-18T14:43:24.280 回答
2

Java (Sun) 代码样式在右侧有大括号,而不是在新行。我建议你习惯这种代码风格。除了许多程序员喜欢新行上的大括号之外,大多数 Java 代码都使用java 标准约定

许多程序员并不完全遵守这些准则(我是少数不喜欢遵循第 80 列的人之一),因此必须根据您的感觉调整这些约定。但总体方向是 Java 代码用于在同一行打开花括号(例如,与 C 不同)。

保持一般风格是个好主意,也有助于您阅读其他人的代码。

顺便说一句,Eclipse 格式化程序是完全可定制的,如果你觉得这样,你可以在新行上加上大括号:

在此处输入图像描述

这在我看来是 C 代码:)。

于 2013-01-18T14:54:14.787 回答
2

使用Clean Up ( Source -> Clean Up...) 代替格式化程序。Clean Up 可以选择使用 、 和 语句的块if以及while格式do选项for,因此您可以获得非常接近您想要的格式。

于 2013-01-18T15:01:36.120 回答
1

我认为 Eclipse 中的 Ctrl + Shift + F 可以做到这一点

于 2013-01-18T14:44:44.433 回答