Моделирование синтаксического анализа выражений с использованием JTable стека постфиксных и префиксных обозначений и стека операторов

Реализация графического интерфейса Java Swing

Всем привет! Мне нужна помощь с логикой здесь, я все еще не знаком со стеком, и нам сказали создать программу на Java, которая будет выводить постфиксную и префиксную нотацию инфикса с отсканированным символом, постфиксным / префиксным стеком и оператором. Куча.

Проблема: Кажется, я не могу понять логику того, как я могу распечатать Postfix и Prefix Stack и Operator Stack, как показано ниже в «JTable»:

Визуализируйте это как вертикальный столбец, разделенный на,

  • Отсканированный символ = (, A, +, B,), -, C, (как показано на рисунке JTable)
  • Постфиксный / префиксный стек = __, AB, AB+, ABC, ABC-,
  • Стек операторов =),),)+,)+,)+),)+)-,)+, __,

Вот часть кода, которую я использовал для «кнопки ввода»:

      private void EnterButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                             
    
    // ENTER BUTTON FUNCTION
    
    String expression;
    expression = InfixInput1.getText();
    System.out.println("POSTFIX CONVERSION : "+infixToPostfix(expression));
    
    DisplayInput1.setText(expression);
    PostfixOutput.setText(infixToPostfix(expression));
    
    PostfixTable.getColumnModel().getColumn(0).setPreferredWidth(5);
    PostfixTable.getColumnModel().getColumn(1).setPreferredWidth(5);
    PostfixTable.getColumnModel().getColumn(2).setPreferredWidth(5);
    
    String header[] = {"Scanned Symbol","Postfix Stack", "Operator Stack"};
    PostfixTable.setAutoCreateColumnsFromModel(true);
    
    try {
        for(int i=0;i<PostfixTable.getColumnCount();i++) {
            

            TableColumn column1 = PostfixTable.getTableHeader().getColumnModel().getColumn(0);

            column1.setHeaderValue(header[0]);
            
            TableColumn column2 = PostfixTable.getTableHeader().getColumnModel().getColumn(1);
            
            column2.setHeaderValue(header[1]);
            
            TableColumn column3 = PostfixTable.getTableHeader().getColumnModel().getColumn(2);
            
            column3.setHeaderValue(header[2]);
            
        }
    } catch (HeadlessException ex) {
        Logger.getLogger(DataStructureGUI.class.getName()).log(Level.SEVERE, null, ex);
    }
    
    for(int i = 0; i <= expression.length()-1; i++){
       
        char a = expression.charAt(i);
        
        
        DefaultTableModel model = (DefaultTableModel) PostfixTable.getModel();
        model.addRow(new Object[]{a});
        
    }
}                                        

Последний «цикл for» печатает и отображает отсканированные символы по «символу и строке в JTable»:

      for(int i = 0; i <= expression.length()-1; i++){
       
        char a = expression.charAt(i);
        
        
        DefaultTableModel model = (DefaultTableModel) PostfixTable.getModel();
        model.addRow(new Object[]{a});
        
    }

Я ценю это, ребята. Спасибо!

0 ответов

Другие вопросы по тегам