Возведение матрицы в степень через JTable

Делаю умножение матриц через графический интерфейс (Jtable), но вечно вылезают ошибки. Не могли бы вы мне помочь разобраться? При нажатии на кнопку матрица должна возвестись в квадрат, но вылезает ошибка class java.lang.Integer cannot be cast to class java.lang.String. Как ее можно исправить? Вот код:


    DefaultTableModel model;
    DefaultTableModel model2;
    Object[][] matrix1 = new Object[][]{{1, 2, 3},{2, 3, 4},{4, 5, 6}};
    public NewJFrame() {
        initComponents();
        model = new DefaultTableModel();
        model.addColumn("s1");
        model.addColumn("s2");
        model.addColumn("s3");
        
        for(int i = 0; i < matrix1.length; i++)
        {
            model.addRow(matrix1[i]);
        }

        jTable1.setModel(model);
    }


    private void jButton2MouseClicked(java.awt.event.MouseEvent evt) {                                      
        Object[][] matrix2 = new Object[3][3];
        Object[][] matrix3 = new Object[3][3];
        
        for(int i = 0; i < matrix2.length; i++)
        {
            for(int j = 0; j < matrix2.length; j++)
            {
                matrix2[i][j] = model.getValueAt(j, i);
            }
        }
        
        for(int i = 0; i < matrix3.length; i++)
        {
            for(int j = 0; j < matrix3.length; j++)
            {
                for(int k = 0; k < matrix3.length; k++)
                {
                    double d1 = Double.parseDouble((String) jTable1.getValueAt(j,k));
                    double d2 = Double.parseDouble((String) jTable1.getValueAt(k,i));
                    double d3 = d1 * d2;
                    jTable1.setValueAt(d3, j, i);
                }
            }
        }       
    }


Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Основная ошибка в вызове (String) jTable1.getValueAt(j,k). getValueAt возвращает Object. А модель вы заполняли целыми числами (int). Автобоксинг сделал из него Integer. Приведение (String) не может быть применено к объекту реальный тип которого Integer. Чтобы исправить напишите (Integer) jTable1.getValueAt(j,k). Double.parseDouble тогда не будет нужен.

С другой ошибкой вы ещё не столкнулись. d3 не нужно записывать в таблицу. Надо сложить все d3 для разных k и записать в таблицу сумму. Запись должна быть вне цикла по k.

→ Ссылка