2011-12-02 70 views
-3

我的代碼是一個簡單的自動販賣機。我使用集中parttern編碼。但是,我發現了一些錯誤,比如在課堂上veding_machine,某些東西不能被解析爲類型

Ls[3]=new nosmall_cups(); 
Ls[4]=new nolarge_cups(); 
Ls[5]=new exit(); 
Ls[6]=new start(); 

這些錯誤都是一樣的: - 我用LS [當每次「在這一行 多個標誌nosmall_cups不能被解析爲一個類型」 並且還]在類veding_machine,總有退出錯誤「LS不能被解析爲一個變量」,例如在下面的代碼:

public void small_cup(){ 
     st.small_cup(); 
     if(st.getId()==1){ 
      //s=2; 
      st=Ls[1]; 
     } 
     if(st.getId()==2){ 
      //s=2; 
      st=Ls[2]; 
     } 
    } 

這種自動售貨機的整個代碼如下:

import java.util.*; 
class veding_machine{ 
    State st; 
    private int price; 
    private int k; 
    private int k1; 
    private int t; 
    private int s; 
     public veding_machine(){ 

     State[] Ls=new State[7]; 
     Ls[0]=new idle(); 
     Ls[1]=new coins_inserted(); 
     Ls[2]=new sugar(); 
     Ls[3]=new nosmall_cups(); 
     Ls[4]=new nolarge_cups(); 
     Ls[5]=new exit(); 
     Ls[6]=new start(); 
     k=0; 
     k1=0; 
     t=0; 
     price=0; 

    } 
    public void setK(int k){ 
     this.k=k; 
    } 
    public int getK(){ 
     return k; 
    } 
    public void setT(int t){ 
     this.t=t; 
    } 
    public int getT(){ 
     return t; 
    } 
    public void setK1(int k1){ 
     this.k1=k1; 
    } 
    public int getK1(){ 
     return k1; 
    } 
    public void setPrice(int price){ 
     this.price=price; 
    } 
    public int getPrice(){ 
     return price; 
    } 
    public void setS(int s){ 
     this.s=s; 
    } 
    public int getS(){ 
     return s; 
    } 

    public void coin(){ 
     st.coin(); 
     if(st.getId()==0){ 
      if(t+25<price){ 
       // t=t+25; 
       st=Ls[0]; 
      } 
      if(t+25>=price && price>0){ 
       //s=0; 
       //t=0; 
       st=Ls[1]; 
      } 
     } 
     else if(st.getId()==1){ 
      if(k1>1 && s==2){ 
       //k1=k1-1; 
       st=Ls[0]; 
      }else{ 
       st=Ls[1]; 
      } 
     } 
     else if(st.getId()==2){ 
      st=Ls[2]; 
     } 
     else if(st.getId()==3){ 
      st=Ls[3]; 
     } 
     else if(st.getId()==4){ 
      st=Ls[4]; 
     } 
    } 
    public void small_cup(){ 
     st.small_cup(); 
     if(st.getId()==1){ 
      //s=2; 
      st=Ls[1]; 
     } 
     if(st.getId()==2){ 
      //s=2; 
      st=Ls[2]; 
     } 
    } 
    public void large_cup(){ 
     st.large_cup(); 
     if(st.getId()==1){ 
      //s=1; 
      st=Ls[1]; 
     } 
     if(st.getId()==2){ 
      //s=2; 
      st=Ls[2]; 
     } 
    } 
    public void sugar(){ 
     st.sugar(); 
     if(st.getId()==1){ 
      st=Ls[2]; 
     } 
     if(st.getId()==2){ 
      st=Ls[1]; 
     } 
    } 
    public void tea(){ 
     st.tea(); 
     if(st.getId()==1){ 
      if(k>1&&s==1){ 
       //k=k-1; 
       st=Ls[0]; 
      } 
      if(k1>1&&s==2){ 
       //k1=k1-1; 
       st=Ls[0]; 
      } 
      if(k==1&&s==1){ 
       //k=k-1; 
       st=Ls[3]; 
      } 
      if(k1==1&&s==2){ 
       //k1=k1-1; 
       st=Ls[4]; 
      } 
     } 
     if(st.getId()==2){ 
      if(k==1&&s==1){ 
       //k=k-1; 
       st=Ls[3]; 
      } 
      if(k1==1&&s==2){ 
       //k1=k1-1; 
       st=Ls[4]; 
      } 
      if(k1>1&&s==2){ 
       //k1=k1-1; 
       st=Ls[0]; 
      } 
      if(k>1&&s==1){ 
       //k=k-1; 
       st=Ls[0]; 
      } 
     } 
    } 
    public void insert_large_cups(int n){ 
     st.insert_large_cups(n); 
     if(st.getId()==0){ 
      if(n>0){ 
      //k=k+n; 
      st=Ls[0]; 
      } 
     } 
     if(st.getId()==3){ 
      if(n>0){ 
       //k=n; 
       st=Ls[0]; 
      } 
     } 
    } 
    public void insert_small_cups(int n){ 
     st.insert_small_cups(n); 
     if(st.getId()==0){ 
      if(n>0){ 
       //k1=k1+n; 
       st=Ls[0]; 
      } 
     } 
     if(st.getId()==4){ 
      if(n>0){ 
       //k1=n; 
       st=Ls[0]; 
      } 
     } 
    } 
    public void set_price(int p){ 
     st.set_price(p); 
     if(st.getId()==0){ 
      if(p>0){ 
       //price=p; 
       st=Ls[0]; 
      } 
     } 

    } 
    public void cancle(){ 
     st.cancle(); 
     if(st.getId()==1){ 
      st=Ls[0]; 
     } 
     if(st.getId()==2){ 
      st=Ls[0]; 
     } 
    } 
    public void dispose(){ 
     st.dispose(); 
     if(st.getId()==0){ 
      st=Ls[5]; 
     } 
    } 
} 
class State{ 

    veding_machine vm; 

    int id; 

    public void coin(){} 
    public void small_cup(){} 
    public void large_cup(){} 
    public void sugar(){} 
    public void tea(){} 
    public void insert_large_cups(int n){} 
    public void insert_small_cups(int n){} 
    public void set_price(int p){} 
    public void cancle(){} 
    public void dispose(){} 
    public int getId(){ 
     return id; 
     } 

} 
// operation of idle class 
class idle extends State{ 
// idle i; 
    veding_machine vm; 
    public void coin(){ 
     if(vm.getT()+25<vm.getPrice()){ 
      vm.setT(vm.getT()+25); 
     } 
     if((vm.getT()+25>=vm.getPrice())&&(vm.getPrice()>0)){ 
      vm.setS(0); 
      vm.setT(0); 
     } 
    } 
    public void insert_small_cups(int n){ 
     if(n>0){ 
      vm.setK1(vm.getK1()+n); 
     } 
    } 
    public void insert_large_cups(int n){ 
     if(n>0){ 
      vm.setK(vm.getK()+n); 
     } 
    } 
    public void set_price(int p){ 
     if(p>0){ 
      vm.setPrice(p); 
     } 
    } 
    public void dispose(){ 
     System.exit(0); 
    } 
} 
//operation of coins_inserted class 
class coins_inserted extends State{ 
    veding_machine vm; 

    public void coin(){ 
     vm.setT(0); 
     System.out.println("return coins"); 
    } 
    public void cancel(){ 
     vm.setT(0); 
     System.out.println("return coins"); 
    } 
    public void sugar(){ 

    } 
    public void small_cup(){ 
     vm.setS(2); 
    } 
    public void large_cup(){ 
     vm.setS(1); 
    } 
    public void tea(){ 
     if(vm.getK()==1&&vm.getS()==1){ 
      vm.setK(vm.getK()-1); 
      System.out.println("dispose large cup of tea;"); 
     } 
     if(vm.getK1()==1&&vm.getS()==2){ 
      vm.setK1(vm.getK1()-1); 
      System.out.println("dispose small cup of tea;"); 
     } 
     if(vm.getK()>1&&vm.getS()==1){ 
      vm.setK(vm.getK()-1); 
      System.out.println("dispose large cup of tea;"); 
     } 
     if(vm.getK1()>1&&vm.getS()==2){ 
      vm.setK1(vm.getK1()-1); 
      System.out.println("dispose small cup of tea;"); 
     } 
    } 
    public void cancle(){ 
      vm.setT(0); 
      System.out.println("return coins"); 
    } 
} 
//operation of sugar class 
class sugar extends State{ 
    veding_machine vm; 

    public void coin(){ 
     vm.setT(0); 
     System.out.println("return coins"); 
    } 
    public void small_cup(){ 
     vm.setS(2); 
    } 
    public void large_cup(){ 
     vm.setS(1); 
    } 
    public void sugar(){ 

    } 
    public void tea(){ 
     if(vm.getK()==1&&vm.getS()==1){ 
      vm.setK(vm.getK()-1); 
      System.out.println("dispose large cup of tea;"); 
     } 
     if(vm.getK1()==1&&vm.getS()==2){ 
      vm.setK1(vm.getK1()-1); 
      System.out.println("dispose small cup of tea;"); 
     } 
     if(vm.getK()>1&&vm.getS()==1){ 
      vm.setK(vm.getK()-1); 
      System.out.println("dispose large cup of tea with sugar;"); 
    } 
     if(vm.getK1()>1&&vm.getS()==2){ 
      vm.setK1(vm.getK1()-1); 
      System.out.println("dispose small cup of tea with sugar;"); 
     } 
} 
//operation of nolarge_cups class 
class nolarge_cups extends State{ 
    veding_machine vm; 
    public void coin(){ 
     vm.setT(0); 
     System.out.println("return coins"); 
    } 
    public void insert_large_cups(int n){ 
     if(n>0){ 
      vm.setK(n); 
     } 
    } 
} 
//operation of nosmall_cups class 
class nosmall_cups extends State{ 
    veding_machine vm; 

    public void coin(){ 
     vm.setT(0); 
     System.out.println("return coins"); 
    } 
    public void insert_small_cups(int n){ 
     if(n>0){ 
      vm.setK1(n); 
     } 
    } 
} 

//operation of start class 
class start extends State{ 
    public void veding_machine(){ 
     int k=0; 
     int t=0; 
     int price=0; 
     int k1=0; 
    } 
} 
//operation of exit class 
class exit extends State{} 
public static void main(String[] args) { 
    //idle i; 
    //coins_inserted ci; 
    //sugar sg; 
    //nosmall_cups nsc; 
    //nolarge_cups nlc; 
    //exit et; 
    //start st; 
    int b; 
    char ch1; 

    System.out.println("*****CS589 Fall 2010***** \n"+ 
         "******PROJECT********\n"+ 
         "******DEMO******\n"); 
    // PutLines(3); 
    veding_machine vm; 
      ch1='1'; 
      while(ch1!='q'){ 
       System.out.println("DRIVE for the vending machine\n"); 
       System.out.println("  0. coin() \n"); 
       System.out.println("  1. small_cup() \n"); 
       System.out.println("  2. large_cup() \n"); 
       System.out.println("   3. sugar() \n"); 
       System.out.println("   4. tea() \n"); 
       System.out.println("   5. insert_large_cups(int n) \n"); 
       System.out.println("   6. insert_small_cups(int n) \n"); 
       System.out.println("   7. set_Price(int p) \n"); 
       System.out.println("   8. cancle() \n"); 
       System.out.println("   9. dispose() j\n"); 

       System.out.println("   Testing-related methods\n"); 
       System.out.println("   a. show_variables() \n"); 
       System.out.println("   q. Quit Vending Machine class driver \n"); 

       Scanner scan=new Scanner(System.in); 
       ch1=(char)scan.nextInt(); 

       switch(ch1){ 

       case 'a': 
         System.out.println(" show_variables() testing-related method "); 

       } 


      } 

    } 

} 
+2

Ah..stick with Java naming conventions !!!!!它使您的代碼非常難以讀取,因此很難排除故障。 – mre

+0

等等,你是不是應該把它們放在各自的文件中? – Viruzzo

+0

我強烈建議您閱讀Java的類,變量,方法和包的命名約定。沒有編譯代碼,我猜它試圖將Ls解析爲一個類型,因爲它以大寫字母開頭。 – DPM

回答

1

您的Ls變量對於其他方法而言是超出可見範圍的,因爲它僅在veding_machine構造函數中聲明。讓它成爲一個領域,以便其他方法也可以看到它。

0

聲明爲「nosmall_cups」變量的編譯時類型的類不存在,與使用它的類不在同一個包中,或者您忘記導入它。

1

你忘了關閉你的糖類(最後缺少)。因此,您在Sugar下的課程無法識別。

在任何體面的IDE中體面的格式化在眨眼之間就已經顯露出來了。

相關問題