2015-01-26 4 views
0

здесь кусок кода:печать из переключателя заявление Явы

class Main { 
public static void main(String[] args) { 
    try { 
     CLI.parse (args, new String[0]); 

     InputStream inputStream = args.length == 0 ? 
       System.in : new java.io.FileInputStream(CLI.infile); 
     ANTLRInputStream antlrIOS = new ANTLRInputStream(inputStream); 

     if (CLI.target == CLI.SCAN || CLI.target == CLI.DEFAULT) 
     { 
      DecafScanner lexer = new DecafScanner(antlrIOS); 
      Token token; 
      boolean done = false; 
      while (!done) 
      { 
       try 
       { 
        for (token=lexer.nextToken(); 
         token.getType()!=Token.EOF; token=lexer.nextToken()) 
        { 
         String type = ""; 
         String text = token.getText(); 


         switch (token.getType()) 
         { 
         case DecafScanner.ID: 
          type = " CHARLITERAL"; 
          break; 

         } 
         System.out.println (token.getLine() + type + " " + text); 
        } 
        done = true; 
       } catch(Exception e) { 
        // print the error: 
        System.out.println(CLI.infile+" "+e); 
       } 
      } 
     } 
     else if (CLI.target == CLI.PARSE) 
     { 
      DecafScanner lexer = new DecafScanner(antlrIOS); 
      CommonTokenStream tokens = new CommonTokenStream(lexer); 
      DecafParser parser = new DecafParser (tokens); 
      parser.program(); 
     } 

    } catch(Exception e) { 
     // print the error: 
     System.out.println(CLI.infile+" "+e); 
    } 
} 
} 

Он печатает как это, но так или иначе она не выводит тип только значение по умолчанию его, который является пустой строкой. Как я могу сделать это для печати из инструкции switch?

Спасибо!

+0

Может быть поставлен оператор печати внутри вашего 'case'? – ha9u63ar

+2

Вы пробовали отлаживать, чтобы вы могли видеть, что такое тип токена? – elefont

+0

Я думал о преобразовании всей вещи в строку и распечатывал случай, но я не уверен, что это лучший способ. не говоря уже позже, мне нужно создать больше случаев. – user4496331

ответ

0
  1. Пробуйте отладки.
  2. Попробуйте напечатать значение из раздела коммутатора, чтобы узнать, не попали ли вы в него.
  3. Попробуйте заменить коммутатор простым «==», чтобы увидеть, если вы когда-либо получаете «token.getType() == DecafScanner.ID»
  4. Общее предложение - переместите определение «тип» и «следующий» за пределы цикл, чтобы избежать повторного создания их снова и снова.
Смежные вопросы