import java.util.Scanner;
public class Main {
static char[] s=new char[100];
static int i;
static int SIGN;
public static void E(){
if(SIGN==0){
T();
E1();
}
}
public static void E1(){
if(SIGN==0){
if(s[i]=='+'||s[i]=='-'){
++i;
T();
E1();
}
else if(s[i]!='#'&&s[i]!=')'&&s[i]!=';'&&s[i]!='*'&&s[i]!='/'){
System.out.println("语句有误!");
SIGN=1;
}
}
}
public static void T(){
if(SIGN==0){
F();
T1();
}
}
public static void T1(){
if(SIGN==0){
if(s[i]=='*'||s[i]=='/'){
++i;
F();
T1();
}
else if(s[i]!='#'&& s[i]!=')'&&s[i]!='+'&&s[i]!='-'&&s[i]!=';'){
System.out.println("语句有误!");
SIGN=1;
}
}
}
public static void F(){
if(SIGN==0){
if(s[i]=='b'){
++i;
E();
if(s[i]=='('){
++i;
E();
if(s[i]==')'){
++i;
E();
if(s[i]==';'){
++i;
E();
if(s[i]=='e'){
++i;
E();
}
else if(s[i]=='#'){
System.out.println("语句有误!");
SIGN=1;
++i;
}
}
}
}
}
else if(s[i]=='i')
++i;
else{
System.out.println("语句有误!");
SIGN=1;
}
}
}
public static void main(String[] args) {
System.out.println("请输入一个语句,以#号结束语句(直接输入#号退出)");
while(true){
SIGN=0;
i=0;
Scanner sc=new Scanner(System.in);
String c=sc.next();
char s[]=c.toCharArray();
System.out.println(s);
for(int i=0;i<s.length;i++){
if(s[0]=='#')
break;
E();
if(s[i]=='#')
System.out.println("正确语句!");
}
System.out.println("请输入一个语句,以#号结束语句");
}
}
}
输入bi=i+i*(i/i-i);i=i+i;e#测试
debug发现在判断s[0]的时候直接就跳过了,这是为什么呢?
Try initializing SIGN to 0