2015-11-02 27 views
0

我正在開發一個java掃描器項目。然後掃描器將掃描代碼文件並標識所有的標記並將它們列爲用戶的輸出。如果無效標記,掃描儀應該提及給定標記無效。 這裏是我的代碼如何生成所有字符串和所有的++, - - 針對java輸入文件的數字,還提到這是字符串還是單個字母?

try {           
     FileReader fin = null; 
     try { 
      fin = new FileReader(jTextField1.getText()); 
     } catch (FileNotFoundException ex) { 
      Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex); 
     } 
     BufferedReader br= new BufferedReader(fin); 
     String line = null; 

     while ((line = br.readLine()) != null) { 



    // Get ending position 

      System.out.println(line); 


      StringTokenizer st = new StringTokenizer(line, "abcdefghijklmnopqrstuvwxyz[ =-+++--';().*{}[],[email protected]#$%^&/]", true); 


      int caret=jTextArea1.getCaretPosition(); 

       while(st.hasMoreTokens()){ 
       switch(st.nextToken()){ 
        case "++": 
       jTextArea1.insert("++"+" "+":Unary Operator "+"\n",caret); 
          break; 
          case "--": 
       jTextArea1.insert("--"+" "+":Unary Operator "+"\n",caret); 
           break; 
           case "!": 
       jTextArea1.insert("!"+" "+":Unary Operator "+"\n",caret); 
            break; 
            case "+": 
       jTextArea1.insert("+"+" "+":Airthmatic Operator "+"\n",caret); 
             break; 
           case "-": 
       jTextArea1.insert("-"+" "+":Airthmatic Operator "+"\n",caret); 
            break; 
            case "*": 
       jTextArea1.insert("*"+" "+":Airthmatic Operator "+"\n",caret); 
             break; 
           case "/": 
       jTextArea1.insert("/"+" "+":Airthmatic Operator "+"\n",caret); 
            break; 
            case "%": 
       jTextArea1.insert("%"+" "+":Airthmatic Operator "+"\n",caret); 
            break; 
             case "<<": 
       jTextArea1.insert("<<"+" "+":Rational Operator "+"\n",caret); 
             break; 
           case ">>": 
       jTextArea1.insert(">>"+" "+":Rational Operator "+"\n",caret); 
            break; 

             case "=": 
       jTextArea1.insert("="+" "+":Rational Operator "+"\n",caret); 
             break; 
           case "(": 
       jTextArea1.insert("("+" "+":Symbol "+"\n",caret); 
            break; 
            case "&": 
       jTextArea1.insert("&"+" "+":Conditional Operator "+"\n",caret); 
            break; 
            case "|": 
       jTextArea1.insert("|"+" "+":Conditional Operator "+"\n",caret); 
            break; 
             case ")": 
       jTextArea1.insert(")"+" "+":Symbol "+"\n",caret); 
              break; 
              case "{": 
       jTextArea1.insert("{"+" "+":Symbol "+"\n",caret); 
               break; 
               case "}": 
       jTextArea1.insert("}"+" "+":Symbol "+"\n",caret); 
                break; 
              case "[": 
       jTextArea1.insert("["+" "+":Symbol "+"\n",caret); 
               break; 
               case "]": 
       jTextArea1.insert("]"+" "+":Symbol "+"\n",caret); 
                break; 
                case ".": 
       jTextArea1.insert("."+" "+":Symbol "+"\n",caret); 
               break; 
               case ",": 
       jTextArea1.insert(","+" "+":Symbol "+"\n",caret); 
                break; 
                case ";": 
       jTextArea1.insert(";"+" "+":Symbol "+"\n",caret); 
               break; 
               case ":": 
       jTextArea1.insert(":"+" "+":Symbol "+"\n",caret); 
                break; 
                case "'": 
       jTextArea1.insert("'"+" "+":Symbol "+"\n",caret); 
               break; 


           default : 
            break; 

這裏是我的輸出http://s11.postimg.org/962xs85r7/Untitled.jpg 程序輸出適用於所有支架和運營商,因爲我在switch語句中提及,但我想這是顯示所有的字符串作爲顯示輸出,也提它是字符串,也是++, - 數字,但是我怎樣才能使用字符串檢查和++, - 在switch語句中的數字。例如:system:string ab:字符串和輸出中顯示的所有字符串相同,謝謝

+0

嘗試澄清的問題,至少我不明白你實際上問......特別是「例如」一段代碼(?)結尾問題的正確格式,這可能是關鍵。 – hyde

+0

但是,如果我理解正確,你不能。使用'if'代替(可能在'switch'的'default:'部分)。 – hyde

+0

我問「我怎樣才能生成所有的字符串和++, - 在java輸入文件中的數字」。我想要這樣的輸出:如果文件包含system.out.println,那麼system:String。 :operator out:string println:string –

回答

0

你的問題是你不能在switch語句中使用正則表達式。 你可以做的是使用默認值。在默認情況下,您可以添加這種代碼: 如果(str.matches(「[A-ZA-Z]」))

要使用你需要使用的nextToken()時,提前保存它的字符串: String str = st.nextToken();

正則表達式可以根據你的假設會發生變化

+0

soory,我不明白你的觀點 –

+0

如何使用這個if(str.matches(「[A-Za-z]」 )){ jTextArea1.insert() }欲stringhere所示的本類型的輸出:串 –

+0

默認: 如果(str.matches( 「[A-ZA-Z]」)){ jTextArea1.insert(」字符串」,脫字符號); (str.matches(「[A-Za-z]」)){ jTextArea1(0)我使用這個,但它產生奇怪的輸出所有的字符串顯示在一個單一的線stringtringstring –

相關問題