2011-12-02 95 views
0
Syntax error on token ";", { expected after this token. 

我在第11行和第19行發生了這個錯誤。有沒有人能告訴我什麼是它的問題?這個錯誤有什麼問題? ----關於令牌「;」的語法錯誤,{預計在此令牌之後

import java.util.*; 
class veding_machine{ 
    State st; 
    veding_machine vm; 
    private int price; 
    private int k; 
    private int k1; 
    private int t; 
    private int s; 
    State Ls[]=new State[7]; // 11th line 

    Ls[0]=idle; 
    Ls[1]=coins_inserted; 
    Ls[2]=sugar; 
    LS[3]=nsc; 
    Ls[4]=nlc; 
    Ls[5]=et; 
    Ls[6]=st; // 19th line 

public veding_machine(){  k=0;  k1=0;  t=0;  price=0; 
      } 

    public void setK(int k){ 
     this.k=k; 
    } 
+0

請在代碼中用行註釋指出行號.. –

+0

當您提到會導致錯誤的行號時,如果您在發佈的代碼中也在該行中添加了註釋,這樣很好,這樣人們就沒有了統計它們或將它們複製到編輯器中以識別該行。 :) –

+2

@normalocity嗯,我認爲原來的用戶確實......如果我沒有弄錯的話,它看起來像是其中一個編輯擺脫了它們。 – Bryan

回答

0

LS的初始化應該是vending_machine構造函數中,應該是創造類「閒置」的情況和「coins_inserted」,等等

Ls[0] = new idle(); 
Ls[1] = new coins_inserted(); 
Ls[2] = new sugar(); 
Ls[3] = new nsc(); 
Ls[4] = new nlc(); 
Ls[5] = new et(); 
Ls[6] = new st(); 

和這些類需要擴展State類

class idle extends State { 
    // ... 
} 

他們不需要他們內部的狀態實例。

// removed, State st; 
    public coins_inserted(){ 
     // removed, st=new State(); 
    } 
1

初始化一個構造函數內部的數組,你不能對它們進行初始化這樣的,當你聲明數組,或者在構造函數或在初始化它們初始化塊。並糾正拼寫錯誤。看看這個tutorial

Ls[0]=idle; 
Ls[1]=coins_inserted; 
Ls[2]=sugar; 
Ls[3]=nsc; 
Ls[4]=nlc; 
Ls[5]=et; 
Ls[6]=st 

;

0
State Ls[]=new State[7]; // 11th line 

這是實例化陣列。你應該把它放在構造函數或初始化塊中。另外最好是在Java的方法來初始化參考:

State[] Ls = new State[7]; 

LS[3]=nsc; 

應該

Ls[3]=nsc; 

並再次初始化在構造函數或init塊的元素。

另外,我知道這並不回答這個問題,但我只需要說一些關於命名和樣式的知識。請將vendingMachine命名爲vending_machine類,併爲其他對象提供更多描述性名稱而不是模糊的字母。遵循約定有助於您在一週/一年/一年後回到代碼中,並避免您試圖弄清楚自己在做什麼。即使這只是學校裏的一個小項目,也是你學習和實踐這些約定最重要的地方。

此外,當代碼美觀時更是如此。

相關問題