Возведение матрицы в степень через 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 шт):
Основная ошибка в вызове (String) jTable1.getValueAt(j,k). getValueAt возвращает Object. А модель вы заполняли целыми числами (int). Автобоксинг сделал из него Integer. Приведение (String) не может быть применено к объекту реальный тип которого Integer. Чтобы исправить напишите (Integer) jTable1.getValueAt(j,k). Double.parseDouble тогда не будет нужен.
С другой ошибкой вы ещё не столкнулись. d3 не нужно записывать в таблицу. Надо сложить все d3 для разных k и записать в таблицу сумму. Запись должна быть вне цикла по k.