<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      基于有限狀態(tài)自動機的數(shù)據(jù)類型識別功能(2)

      初始數(shù)組以及各標志位

       1     private final int[][] State_table;
       2     private int Now_state=0;
       3     private final int Char_m=0;//表示0-9的字符 49-48
       4     private final int Char_d=1;//表示.字符    45
       5     private final int Char_e=2;//表示e字符    69/101
       6     private final int Char_j=3;//表示-字符    46 
       7     //空格32
       8     
       9     private final int Int_result_code=1;//整型
      10     private final int Float_result_code=3;//浮點型
      11     private final int Scientif_result_code=6;//科學(xué)記數(shù)法
      12     private final int Scientif_result_code_2=7;//科學(xué)記數(shù)法
      13     // 0 2 4 5 狀態(tài)不可輸出

      State_table 就是上一章所提到的二維數(shù)組,用于存放各狀態(tài)以及對應(yīng)的轉(zhuǎn)換關(guān)系。

      Now_state 表示當前所處的狀態(tài),這里初始化為狀態(tài)0.

      Char_* 表示各縱軸數(shù)值

      剩下的表示可以輸出的狀態(tài)

      初始化數(shù)組

       1 FSM(){
       2     State_table=new int[8][4];
       3     int[] b={1,1,3,3,7,6,6,7};
       4     
       5     for(int i=0;i<8;i++)
       6     Arrays.fill(State_table[i],-1);//填滿
       7     State_table[1][1]=2;
       8     State_table[1][2]=4;
       9     State_table[3][2]=4;
      10     State_table[4][3]=5;
      11     for(int i=1;i<=8;i++)
      12         State_table[i-1][0]=b[i-1];            
      13     }

      我的類名就叫FSM所以這是一個構(gòu)造方法

      使用Arrays.fill可以方便的將所有數(shù)組填滿-1.但是這個方法只支持一位數(shù)組。所以在這里用一個for循環(huán)來遍歷8個一位數(shù)組

      最終的數(shù)組就是這個樣子

      1  -1  -1  -1

      1   2   4  -1

      3  -1  -1  -1

      3  -1   4  -1

      7  -1  -1   5

      6  -1  -1  -1

      6  -1  -1  -1

      7  -1  -1  -1

       

      行輸入并判斷每一個字符屬于(0還是1 ? 2? 3?) 0 1 2 3 對應(yīng)開頭定義的Char_*

       1     //對輸入的字符串進行類型判斷
       2     public void Input_Classificantion(String Nowline){        
       3         for(int i=0;i<Nowline.length();i++) {            
       4             if(Nowline.charAt(i)>='0'&&Nowline.charAt(i)<='9')
       5                 Change_state(Now_state,Char_m );
       6             else if(Nowline.charAt(i)=='.')
       7                 Change_state(Now_state, Char_d);
       8             else if(Nowline.charAt(i)=='e'||Nowline.charAt(i)=='E')
       9                 {    Check_science(Nowline,i);
      10                     Change_state(Now_state, Char_e);
      11                 }
      12             else if((Nowline.charAt(i)=='-'))
      13                 Change_state(Now_state, Char_j);
      14             else if(Nowline.charAt(i)==' ') {
      15                 //排除同行的空格
      16                     do {
      17                         i=Nowline.indexOf(' ',i)+1;}
      18                     while(Nowline.charAt(i)==' ');
      19                     i--;
      20                     Input();
      21                 }
      22             else 
      23                 {System.out.println("輸入包含非法字符");
      24                 Erroe_code=1;    }        
      25         }
      26         
      27         Input();        
      28     }

      在這里總共出現(xiàn)了三個方法,分別是

      Change_state(int Old_state,int Char_code)

      Input()

      Check_science

      Change_state(int Old_state,int Char_code)

      這個方法是用于將現(xiàn)在所處的狀態(tài)和對應(yīng)的Char_*進行二維表對用,具體實現(xiàn)如下

      1     private boolean Output=false;//能否輸出標志
      2     private boolean Check=false;//檢查科學(xué)計數(shù)法書寫是否規(guī)范
      3     
      4     private int Erroe_code=0;
       1     //通過讀取對應(yīng)數(shù)組的值來確定當前的狀態(tài)值
       2     private void Change_state(int Old_state,int Char_code) {
       3         Now_state=State_table[Old_state][Char_code];        
       4         
       5         if(Now_state==0||Now_state==2||Now_state==4||Now_state==5) //不可輸出狀態(tài)                                     
       6             Output=false;
       7         else if(Now_state==-1){
       8                 System.out.println("輸入錯誤");
       9                 Erroe_code=2;
      10                 System.exit(1);
      11             }
      12         else //可輸出狀態(tài)
      13             Output=true;
      14         
      15     }

       

      Input()

       1     //根據(jù)對應(yīng)的當前狀態(tài)輸出該狀態(tài)的類型
       2     private  void Input() {
       3         if(Output==true) {
       4             if(Now_state==Int_result_code) 
       5                 System.out.println("整型");
       6             else if(Now_state==Float_result_code)
       7                 System.out.println("浮點型");
       8             else if(Check) {
       9                 if(Now_state==Scientif_result_code)
      10                 System.out.println("科學(xué)計數(shù)法負");
      11                 else if(Now_state==Scientif_result_code_2)
      12                 System.out.println("科學(xué)計數(shù)法");
      13             }
      14             else 
      15                 System.out.println("科學(xué)計數(shù)法格式錯誤");
      16         }
      17         else{
      18             System.out.println("輸入錯誤");
      19             Erroe_code=2;
      20             System.exit(1);
      21         }
      22         Now_state=0;
      23     }
      24     

      其中Check標志位代表科學(xué)記數(shù)法是否符合格式

       

      posted on 2019-07-03 22:52  三好學(xué)生_小標標  閱讀(267)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 亚洲国产欧美一区二区好看电影| 成人动漫综合网| 亚洲中文字幕无码一区无广告| 昭通市| 国产suv精品一区二区五| 深夜福利啪啪片| 精品国产成人a在线观看| 亚洲国产成人久久综合区| 久久人人97超碰精品| 国内偷自第一区二区三区| 无码人妻丰满熟妇区毛片18| 日夜啪啪一区二区三区| 九九久久人妻一区精品色| 亚洲最大福利视频网| 欧美人人妻人人澡人人尤物 | 亚洲精品电影院| 一本大道av人久久综合| 亚洲国产精品一区二区第一页| 德庆县| 国产精品无码久久久久AV| 国产成人综合久久亚洲av| 国产精品人妻中文字幕| 国产精品av中文字幕| 欧美性潮喷xxxxx免费视频看| 黑色丝袜脚交视频麻豆| 亚洲夂夂婷婷色拍ww47| 国产黄色三级三级看三级| 婷婷六月色| 国产熟女一区二区三区四区| 中文字幕av无码免费一区| 蜜臀久久综合一本av| 欧美做受视频播放| 麻花传媒在线观看免费| 自拍偷自拍亚洲精品播放| 婷婷色综合成人成人网小说 | 国产无遮挡猛进猛出免费软件| 一区二区三区岛国av毛片| 无人去码一码二码三码区| 四虎国产精品永久地址99| 国产成人精品无码免费看| 亚洲精品一区国产|