我的代碼是一個簡單的自動販賣機。我使用集中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 ");
}
}
}
}
Ah..stick with Java naming conventions !!!!!它使您的代碼非常難以讀取,因此很難排除故障。 – mre
等等,你是不是應該把它們放在各自的文件中? – Viruzzo
我強烈建議您閱讀Java的類,變量,方法和包的命名約定。沒有編譯代碼,我猜它試圖將Ls解析爲一個類型,因爲它以大寫字母開頭。 – DPM