2012-07-29 90 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

相關問題