怎么定义一个安全,动态二维double型的数组类Matrix
时间: 2024-12-10 16:51:37 浏览: 16
定义一个安全、动态的二维`double`类型的数组类`Matrix`,通常需要考虑容量管理、内存分配和元素的高效访问。我们可以创建一个内部维护列数和行数的数据结构,以及一个动态大小的底层数组来存储数据。以下是一个简单的Java示例:
```java
import java.lang.reflect.Array;
public class Matrix {
private int rows;
private int cols;
private double[][] data;
public Matrix(int rows, int cols) {
this.rows = rows;
this.cols = cols;
this.data = new double[rows][cols];
}
// 添加了安全性检查的get方法
public double get(int row, int col) {
if (row >= 0 && row < rows && col >= 0 && col < cols) {
return data[row][col];
} else {
throw new IndexOutOfBoundsException("Array index out of bounds");
}
}
// 同样的,添加了安全性检查的set方法
public void set(int row, int col, double value) {
if (row >= 0 && row < rows && col >= 0 && col < cols) {
data[row][col] = value;
} else {
throw new IndexOutOfBoundsException("Array index out of bounds");
}
}
// 动态增加行数或列数
public void resize(int newRow, int newCol) {
if (newRow > rows || newCol > cols) {
double[][] newData = new double[newRow][newCol];
System.arraycopy(data, 0, newData, 0, Math.min(rows, newCol));
data = newData;
}
}
// 可读性强的toString()方法
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
sb.append(String.format("%.2f ", data[i][j]));
}
sb.append("\n");
}
return sb.toString().trim();
}
阅读全文