| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 547 人关注过本帖
标题:求助:简单的字符串操作出现异常
取消只看楼主 加入收藏
风之舞鹤
Rank: 1
等 级:新手上路
帖 子:180
专家分:0
注 册:2007-6-2
收藏
 问题点数:0 回复次数:0 
求助:简单的字符串操作出现异常
目的是从控制台接入一些文法的产生式,输入格式如下:
S::=sd
A::=sad
D::=asdf
#
通过分析得到分析得到左部:
S A D
右部:
sd sad asdf
然后找出里面不重复的文法符号:
S A D a s d f
写的2个类有异常不知道怎么处理,大家帮看下!:)
public class yufafenxi {
public static void main(String []args)
{
     int i=0,count=0;
     char buffer[]=new char[1000];
     String s="";
     System.out.println("请输入产生式,以#结束:");
     while(true){
        try{
        buffer[i]=(char)System.in.read();}
        catch(Exception e){}
             if(buffer[i]=='#') break;
        i++;count++;
                }
        for(int j=0;j<count;j++)
              s+=buffer[j];
        System.out.println(s);
       isteminal teminal=new isteminal(s);
          teminal.getleft();
          teminal.getright();
        fuhao fuh=new fuhao(s);
        fuh.getfuhao();
          
    }

}
 class isteminal{
     char left[]=new char[10];//求左部的终结符号从A到Z;
     String right[]=new String[10];//求右部的符号串;
     int j,k,m;
     boolean flag=true;
     String r=new String();
     public isteminal(String s)
     {
         char[] prochar = s.trim().toCharArray();
         for(int i=0;i<prochar.length;i++)
         {   
             if(prochar[i]>='A'&&prochar[i]<='Z'&&prochar[i+1]==':')
                 left[j++]=prochar[i];
             if(prochar[i]=='=')
             {     m=i;
                 while(flag)
                 { m++;
                    r+=prochar[m];
                     if(prochar[m]=='\n')
                        flag=false;
                 }
                 right[k++]=r;r="";
                 flag=true;
                 continue;
             }
         }
     }
     public void getleft()
        {        // left.length=j;
            for(int i=0;i<j;i++)
                System.out.print(left[i]+" ");
            System.out.println();
        }
     public void  getright(){
        //for(int i=0;i<k;i++)
        //System.out.print(right[i]);
        System.out.print(right[0]);
        System.out.print(right[1]);
        System.out.print(right[2]);
        
     }
 }
 class fuhao{ //找出文法符号的个数
     char []fh=new char[20];
     int j,k;
     public fuhao(String s)
     {
         char[] prochar = s.trim().toCharArray();
         for(int i=0;i<prochar.length;i++)
         {   
            if (prochar[i]!=':'&&prochar[i]!='='&&prochar[i]!='#'&&prochar[i]!='\n')
            {
                for(j=0;j<=k;j++)
                {
                    if(prochar[i]==fh[j]) i++;
                    //else fh[k++]=prochar[i];
                }
                 fh[k++]=prochar[i];
            }
         }
     }
     public void getfuhao(){
         for(int i=0;i<fh.length;i++)
        System.out.print(fh[i]);
     }
 }
搜索更多相关主题的帖子: 字符 
2007-11-23 14:33
快速回复:求助:简单的字符串操作出现异常
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016924 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved