java代码显示错误。 (';',预计)

问题描述:

class B { 
    int x,y; 
    int z; 
    z=x*y; 

    void show() { 
    System.out.println(z); 
    } 
} 

class A { 
    public static void main(String as[]) { 
    B b=new B(); 
    b.show(); 
    } 
} 
+0

你能正确格式化你的代码并打印完整的错误信息(包括行号)吗? – PaulJWilliams 2011-02-01 10:01:57

+3

你有问题吗? – Jon 2011-02-01 10:02:35

+0

如果你以某种方式使它正确(构造函数或初始化块),你应该仔细考虑它背后的逻辑,因为你有x和y未初始化。 – 2011-02-01 10:07:23

你不能在类体中有语句(z=x*y;)。你有(至少)两个选项:

  • int z = x * y;
  • 使用初始化块

    { 
        z = x * y; 
    } 
    

这几乎是相同的。我更喜欢第一个选项(清洁)See here

z=x*y;你不能在这里做。把它里面的构造

class B { 
    int x,y; 
    int z; 
    //z=x*y; //you cant do it here. where are you getting x and y value by the way??? 

    public B() 
    { 
    //x and y values should be set 'somehow' before this 
    z = x*y; 
    } 

    void show() { 
    System.out.println(z); 
    } 
} 

我觉得你的问题是在这些线路:

int z; 
z=x*y; 

这第一行是完全没有问题 - 它宣称所谓int类型的z一个类的实例变量。然而,第二行是你问题的根源。在Java中,将代码放在类方法或静态初始化程序之外的类中是非法的。在这种情况下,语句z = x * y;是合法的Java代码,但它必须在方法内部。

要解决此问题,您可以将此代码移到构造函数或其他方法中。

z=x*y; 

不在方法体内提及。你不能那样做。将其移至构造函数或其他方法。

在类内部体和外部方法体内,您只能提及字段,方法和内部类声明。