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 :(得分:1)
在构造函数中初始化该数组,不能像这样初始化它们,在声明数组时初始化它们,或者在构造函数或初始化块中初始化它们。并纠正拼写错误。看看这个tutorial。
Ls[0]=idle;
Ls[1]=coins_inserted;
Ls[2]=sugar;
Ls[3]=nsc;
Ls[4]=nlc;
Ls[5]=et;
Ls[6]=st
答案 1 :(得分:0)
Ls的初始化应该在vending_machine构造函数中,并且应该创建类“idle”和“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();
}
答案 2 :(得分:0)
State Ls[]=new State[7]; // 11th line
这是一个实例化的数组。您应该将它放在构造函数或初始化块中。最好以Java方式初始化引用:
State[] Ls = new State[7];
此
LS[3]=nsc;
应该是
Ls[3]=nsc;
再次在构造函数或init块中初始化这些元素。
另外,我知道这不能回答这个问题,但我只想谈谈命名和风格。请将Vending_machine类命名为VendingMachine,并为其他对象提供更具描述性的名称,而不是模糊的字母。以下约定有助于您在一周/一个月/一年后回到您的代码并避免您试图弄清楚您到底在做什么。即使这只是学校中的一个小项目,也是您学习和实践这些惯例最重要的地方。
此外,当代码在美学上令人愉悦时,这很好。