2012-07-29 85 views
2

我是新来的Java和书面简单的代码:无法找到语法错​​误的原因

1 package Rndom; 
2 class Clmm{ 
3 
4 } 
5 public class Clkk { 
6 
7 Clmm klm; 
8 klm = new Clmm(); 
9 
10 } 

Eclipse中显示了错误:

syntax error on token ";" , , expected on line 7 

我试图找出为什么显示此错误。

回答

1

可以初始化变量的方法以外,在它的减速。这就是为什么

private Clmm klm = new Clmm(); //deceleration and initialization 

为你工作。 但是,一旦它被声明(并初始化,即使它是默认值),你也只能在方法或块内改变它的值。这就是为什么下面的代码不适合你:

Clmm klm; // deceleration and initialization to default value 
klm = new Clmm(); //assignment, which is a statement that cannot be outside of a block/method 
+0

谢谢马特,那正是我所期待的。非常感谢 。 – Som 2012-07-29 16:42:46

2

让它Clmm klm = new Clmm();

public class Clkk { 

    private Clmm klm = new Clmm(); 

    // getter setter for klm 
} 

或者在类似的构造器klm

public class Clkk { 

    private Clmm klm; 
    public Clkk() { 
     klm = new Clmm(); 
    } 
    // getter setter for klm 
} 

或者你可以有块作为

public class Clkk { 

    private Clmm klm; 

    { // this is called block and this is equivalent to constructor. But you can not pass arguments to block. Prefer constructors. 
     klm = new Clmm(); 
    } 
    // getter setter for klm 
} 
+0

感谢您的输入,但如果我修改下面的代码,它不显示任何错误。 package Rndom; 类Clmm { } 公共类Clkk { \t \t KLM Clmm =新Clmm(); }只是想知道为什么.... ??? – Som 2012-07-29 16:10:01

+0

你觉得呢? – 2012-07-29 16:14:15

+0

不知道为什么错误不显示在后面的情况。我只是改变了Clmm klm; klm = new Clmm(); .............. to .... Clmm klm = new Clmm(); ...请你解释一下为什么现在没有显示错误的原因。 – Som 2012-07-29 16:26:20

4

将这些行

Clmm klm; 
klm = new Clmm(); 

under

public static void main例如,

public static void main(String [] args) 
{ 
Clmm klm; 
klm = new Clmm(); 
} 
+0

或把它们放在构造函数中。 – 2012-07-29 15:54:02

+0

也rahul没有提到,“Clkk”是主类。 – 2012-07-29 16:04:40

2

你不能把报表之外的类定义的方法或构造函数:

klm = new Clmm(); 
+0

感谢您的输入,但如果我修改下面的代码,它不会显示任何错误。 – Som 2012-07-29 16:07:06