静态字段的Java乘法?

静态字段的Java乘法?,java,multiplication,Java,Multiplication,这可能是stackoverflow上最明显的问题。请帮忙!这个代码有什么问题 public class LevelOne extends Move { static int block1x = 3; static int block1y = 1; static int block2x = 3; static int block2y = 2; static int block3x = 3; static int block3y = 3; bl

这可能是stackoverflow上最明显的问题。请帮忙!这个代码有什么问题

public class LevelOne extends Move {
    static int block1x = 3;
    static int block1y = 1;
    static int block2x = 3;
    static int block2y = 2;
    static int block3x = 3;
    static int block3y = 3;
    block1x *= 32;
    block1y *= 32;
    block2x *= 32;
    block2y *= 32;
    block3x *= 32;
    block3y *= 32;
}
在第7行,它说它期望{而不是};
在第14行,它实际上说它期望}完成类体。为什么???

这样做没有错:

public class LevelOne extends Move {
    static int block1x = 3*32;
    static int block1y = 1*32;
    static int block2x = 3*32;
    static int block2y = 2*32;
    static int block3x = 3*32;
    static int block3y = 3*32;
}
实际值96、32、64等将在编译时计算。您最好定义一个
static final int multiier=32
常量,以便将每个字段定义为
static int block1x=3*乘数
,依此类推。您的代码将更易于阅读和维护

这应该没问题,因为这些是
静态的
字段。对于非
静态
字段的一般情况,此部分应位于类的方法或构造函数中:

block1x *= 32;
block1y *= 32;
block2x *= 32;
block2y *= 32;
block3x *= 32;
block3y *= 32;

现在它们在类声明中,我们可以在其中定义字段、方法和构造函数(以及其他内容)。该空间用于定义类所具有的内容。要定义特定代码,请使用方法或构造函数。

这样做没有错:

public class LevelOne extends Move {
    static int block1x = 3*32;
    static int block1y = 1*32;
    static int block2x = 3*32;
    static int block2y = 2*32;
    static int block3x = 3*32;
    static int block3y = 3*32;
}
实际值96、32、64等将在编译时计算。您最好定义一个
static final int multiier=32
常量,以便将每个字段定义为
static int block1x=3*乘数
,依此类推。您的代码将更易于阅读和维护

这应该没问题,因为这些是
静态的
字段。对于非
静态
字段的一般情况,此部分应位于类的方法或构造函数中:

block1x *= 32;
block1y *= 32;
block2x *= 32;
block2y *= 32;
block3x *= 32;
block3y *= 32;

现在它们在类声明中,我们可以在其中定义字段、方法和构造函数(以及其他内容)。该空间用于定义类所具有的内容。要定义特定代码,请使用方法或构造函数。

初始化部分应位于静态部分或静态方法中:

public class LevelOne extends Move {
    static int block1x = 3;
    static int block1y = 1;
    static int block2x = 3;
    static int block2y = 2;
    static int block3x = 3;
    static int block3y = 3;

    // will be called right after the static variables are initialized
    static{
        block1x *= 32;
        block1y *= 32;
        block2x *= 32;
        block2y *= 32;
        block3x *= 32;
        block3y *= 32;
    }
}

或者您可以将这些字段声明为实例字段(如上所述,只需删除
static
字即可)。

初始化部分应位于静态部分或静态方法中:

public class LevelOne extends Move {
    static int block1x = 3;
    static int block1y = 1;
    static int block2x = 3;
    static int block2y = 2;
    static int block3x = 3;
    static int block3y = 3;

    // will be called right after the static variables are initialized
    static{
        block1x *= 32;
        block1y *= 32;
        block2x *= 32;
        block2y *= 32;
        block3x *= 32;
        block3y *= 32;
    }
}

或者您可以将这些字段声明为实例字段(如上所述,只需删除
static
单词即可)。

很抱歉,但这个答案的第一部分似乎有误导性。在构造函数中初始化静态变量没有什么意义。@AndreyChaschev我只是重写了答案,很抱歉,这个答案的第一部分似乎有误导性。在构造函数中初始化静态变量没有什么意义。@AndreyChaschev我刚刚重写了答案我正要为你的小行星问题发布答案,就在你删除它的时候。我花了30分钟在上面,如果你想看看的话。重新发布并将链接放在这里。别忘了介绍我@peeskillet@peeskillet我正要为你的小行星问题发布答案,你就把它删除了。我花了30分钟在上面,如果你想看看的话。重新发布并将链接放在这里。别忘了介绍我@peeskillet@peeskillet