Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
eclipsejava格式化程序中的换行_Java_Eclipse_Formatting_Format_Formatter - Fatal编程技术网

eclipsejava格式化程序中的换行

eclipsejava格式化程序中的换行,java,eclipse,formatting,format,formatter,Java,Eclipse,Formatting,Format,Formatter,我正在尝试配置Java代码格式化程序,使其具有紧凑的格式。我已经将策略设置为“必要时换行”,最大线宽设置为80,但它要么在不应该换行的地方换行,要么在应该换行的地方不换行。。。下面是我得到的一个例子: // -------------------------------------------------------------------------80-> public class FormatterTest { void test() { int i, a =

我正在尝试配置Java代码格式化程序,使其具有紧凑的格式。我已经将策略设置为“必要时换行”,最大线宽设置为80,但它要么在不应该换行的地方换行,要么在应该换行的地方不换行。。。下面是我得到的一个例子:

// -------------------------------------------------------------------------80->
public class FormatterTest {
    void test() {
        int i, a = 1, b = 1, c = 1, d = 1;
        i =
                a
                        * b
                        * c
                        * d
                        * (100000000 + 100000000 + 100000000 + 100000000
                                + 100000000 + 100000000 + 100000000 + 100000000 + 100000000);
    }
}
// -------------------------------------------------------------------------80->
我想要的是:

    i = a * b * c * d * (100000000 + 100000000 + 100000000 + 100000000
            + 100000000 + 100000000 + 100000000 + 100000000 + 100000000);

谢谢您的帮助。

如果您在行尾添加一个
/
,则可以取消格式设置:

i = a * b * c * d * (100000000 + 100000000 + 100000000 + 100000000 //
        + 100000000 + 100000000 + 100000000 + 100000000 + 100000000);
你在评论中说的“表达”,有不同的表达方式。检查屏幕截图。我认为它(右边eclipse的示例代码)看起来像您想要的

希望对你有帮助

编辑

你能试试吗

 expressions-> Assignments :Do not wrap

我使用“Java约定[内置]”格式化程序设置,在Eclipse中成功地将其格式化如下:

public class FormatterTest {
    void test() {
    int i, a = 1, b = 1, c = 1, d = 1;
    i = (a * b * c * d * (100000000 + 100000000 + 100000000 + 100000000
        + 100000000 + 100000000 + 100000000 + 100000000 + 100000000));
    }
}
出于某种原因,整个表达式周围的括号是必不可少的。没有它们,我会得到完全不同的格式


希望这能有所帮助。

@Patrick:使用此解决方案绝对是个例外。如果您大量需要它,那么您的编码风格可能会有问题。无论如何,在我看来,在廉价的24英寸显示器时代,80的线宽不是当代的。@user714965同意,我们有一个通用的格式化程序,将最大宽度设置为150。另外一个忽略格式化的替代方法是//@formatter:off,然后//@formatter:on。问题完全相同(只是不太常见)行宽设置为150。对于哪种类型的语句,您设置了必要的换行符?我会这样想,如果像Eclipse中的一个现代代码格式化程序不能正确格式化代码。这可能意味着代码中有错误,这个问题应该通过改进代码而不是格式化程序来解决。我不知道Eclipse是否是现代的但是它的格式化程序无法格式化简单的表达式。我认为假装它是我的代码太容易了。我对其他项目的代码也有同样的问题。很抱歉,我尝试了不同类型表达式的不同配置,但无法获得正确的格式。在预览中可以,但在我的代码中不行(在我的示例中,所有表达式类型在必要时都设置为Wrap)。一些表达式类型您不必设置为Wrap。检查我的更新。希望它能有所帮助。它稍微好一点,但没有那么多,它仍然在不应该的地方进行包装,也没有在应该的地方进行包装。无论如何,谢谢。很好的破解,但仍然是一个破解。我担心格式化的错误。