以下是实现返回一个整形的代码,但是总是返回不出来,帮忙看看哪里出错了,编译都没有问题的
public int scaner(char prog[])
{
int m,i,n;
for(m=0;m<20;m++)
token[m++]=' ';
m=0;
ch=prog[p++];
while(ch==' ') ch=prog[p++];
if((ch>='a')&&(ch<='z'))
{
while(((ch>='a')&&(ch<='z'))||((ch>='0')&&(ch<='9')))
{token[m++]=ch;ch=prog[p++];}
token[m++]='\0';
n=0;
for(i=0;i<6;i++)
if(new String(token).equals(new String (numtab[i])));
switch(i)
{
case 0: syn=1;n++;break;
case 1: syn=2;n++;break;
case 2: syn=3;n++;break;
case 3: syn=4;n++;break;
case 4: syn=5;n++;break;
case 5: syn=6;n++;break;
}
if(n==0) syn=10;p--;
}
else
if(ch>='0'&&ch<='9')
{n=0;
while(ch>='0'&&ch<='9')
{n=n*10+(ch-'0');ch=prog[p++];}
syn=11; p--;
}
else switch(ch)
{
case'<': token[m++]=ch;ch=prog[p++];
if(ch=='>')
{token[++m]=ch;syn=22;}
else if(ch=='=')
{token[++m]=ch;syn=21;}
else{p--;syn=20;} break;
case'>': token[m]=ch;
ch=prog[p++];
if(ch=='='){token[++m]=ch;syn=24;}
else{p--;syn=23;} break;
case '+': token[m]=ch;syn=13;break;
case '-': token[m]=ch;syn=14;break;
case '*': token[m]=ch;syn=15;break;
case '/': token[m]=ch;syn=16;break;
case ':': token[m++]=ch;ch=prog[p++];
if(ch=='='){token[++m]=ch;syn=17;}
else{p--;syn=18;}break;
case '=': token[m]=ch;syn=25;break;
case ';': token[m]=ch;syn=26;break;
case '(': token[m]=ch;syn=27;break;
case ')': token[m]=ch;syn=28;break;
case '#': syn=0;token[0]='#';break;
default: syn=-1;}
return syn;
}
但是syn返回不出来,各位哥哥姐姐帮忙看看,
public int scaner(char prog[])
{
int m,i,n;
for(m=0;m<20;m++)
token[m++]=' ';
m=0;
ch=prog[p++];
while(ch==' ') ch=prog[p++];
if((ch>='a')&&(ch<='z'))
{
while(((ch>='a')&&(ch<='z'))||((ch>='0')&&(ch<='9')))
{token[m++]=ch;ch=prog[p++];}
token[m++]='\0';
n=0;
for(i=0;i<6;i++)
if(new String(token).equals(new String (numtab[i])));
switch(i)
{
case 0: syn=1;n++;break;
case 1: syn=2;n++;break;
case 2: syn=3;n++;break;
case 3: syn=4;n++;break;
case 4: syn=5;n++;break;
case 5: syn=6;n++;break;
}
if(n==0) syn=10;p--;
}
else
if(ch>='0'&&ch<='9')
{n=0;
while(ch>='0'&&ch<='9')
{n=n*10+(ch-'0');ch=prog[p++];}
syn=11; p--;
}
else switch(ch)
{
case'<': token[m++]=ch;ch=prog[p++];
if(ch=='>')
{token[++m]=ch;syn=22;}
else if(ch=='=')
{token[++m]=ch;syn=21;}
else{p--;syn=20;} break;
case'>': token[m]=ch;
ch=prog[p++];
if(ch=='='){token[++m]=ch;syn=24;}
else{p--;syn=23;} break;
case '+': token[m]=ch;syn=13;break;
case '-': token[m]=ch;syn=14;break;
case '*': token[m]=ch;syn=15;break;
case '/': token[m]=ch;syn=16;break;
case ':': token[m++]=ch;ch=prog[p++];
if(ch=='='){token[++m]=ch;syn=17;}
else{p--;syn=18;}break;
case '=': token[m]=ch;syn=25;break;
case ';': token[m]=ch;syn=26;break;
case '(': token[m]=ch;syn=27;break;
case ')': token[m]=ch;syn=28;break;
case '#': syn=0;token[0]='#';break;
default: syn=-1;}
return syn;
}
但是syn返回不出来,各位哥哥姐姐帮忙看看,
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货