有些事情无法解决成为一种类型

时间:2011-12-02 16:06:42

标签: java

我的代码是一台简单的自动售货机。我使用集中式parttern来编码。但是我发现了一些错误,例如在类veding_machine中,

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

这些错误是相同的:“此行的多个标记                      - 无法将nosmall_cups解析为“ 而且每当我在类veding_machine中使用Ls []时,总会出现错误“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 ");

              }


           }

    }

}

3 个答案:

答案 0 :(得分:1)

您的Ls变量超出了其他方法的可见范围,因为它仅在veding_machine构造函数中声明。使它成为一个字段,以便其他方法也可以看到它。

答案 1 :(得分:1)

你忘了关闭你的糖类(最后丢失)。因此,您的Sugar以下课程无法识别。

任何体面的IDE中的体面格式都在眨眼间就显露出来了。

答案 2 :(得分:0)

声明为“nosmall_cups”变量的编译时类型的类不存在,与使用它的类不在同一个包中,或者您忘记导入它。