今日所学:
矩阵
1>矩阵的声明
2>矩阵的创建
3>在遍历时候的注意点
1)用矩阵传给矩阵时 要为矩阵传给当前的矩阵 此时需要用到this.
2)遍历时 行数和列数应小于多少,是[1]小于形参的调用 例如:i<a.getRows() j<a.getCols()
[2]还是具体的值
3)在静态函数进行输出矩阵元素操作太麻烦 可以创建一个输出矩阵元素的函数 然后再静态函数中创建对象调用即可
以下截图和代码中包含详细的注释。
package mmm;
//矩阵A
public class Matrix {
int rows;//行数
int cols;//列数
double data[][];//存储数据的二维数组 只有数组没有声明需要后面动态的赋值
public Matrix(){
}
public Matrix(Matrix A){//用一个传进来的矩阵来构造矩阵 即 用一个矩阵来构造当前矩阵
//this.rows=A.rows; 这种方法是应该避免的 this.rows是当前实例的属性,没有问题。但是A.rows是在外部进行访问的 所以这时候需要get set 方法
this.rows=A.getRows();
this.cols=A.getCols();
data=new double[rows][cols];//给data动态赋值
for(int i=0;i<rows;i++)
for(int j=0;j<cols;j++){
//data[i][j]=A.data[i][j]; A.data[i][j]是不对的 又相当于外部访问了
data[i][j]=A.getElementAt(i,j);//获取矩阵A的第i行第j列元素
}
}
public int getRows() {
return rows;
}
public void setRows(int rows) {
this.rows = rows;
}
public int getCols() {
return cols;
}
public void setCols(int cols) {
this.cols = cols;
}
public double getElementAt(int rowindex,int colindex){//对矩阵列和行的索引
return data[rowindex][colindex];
}
public Matrix(double data[][]){//用一个传进来的二维数组来构造矩阵
this.rows=data.length;
this.cols=data[0].length;//知道矩阵的在第一行的列数就知道矩阵的全部列数了 因为矩阵每一行的列数是相等的
this.data=new double[this.rows][this.cols];
for(int i=0;i<rows;i++)
for(int j=0;j<cols;j++){
this.data[i][j]=data[i][j];//获取矩阵A的第i行第j列元素 传过来的data[i][j]=当前的data[i][j] 即:将参数数组的值传给了当前实例
}
}
public void printMartix(){
System.out.println("矩阵元素为:");
for(int i=0;i<getRows();i++){
for(int j=0;j<getCols();j++)
{
//System.out.print(getElementAt(i, j)+" ");
System.out.print(data[i][j]+" ");//同上面输出的一样 因为现在的 data[i][j]就是当前实例
}
System.out.println();
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
double data[][]={{1,2,3},{4,5,6}};
Matrix m=new Matrix(data);
m.printMartix();
/*System.out.println("矩阵元素为:");
for(int i=0;i<m.getRows();i++){
for(int j=0;j<m.getCols();j++)
{
System.out.print(m.getElementAt(i, j)+" ");
}
System.out.println();
}*///这样输出太麻烦 通过构造一个函数然后在主函数创造对象通过调用来输出
}
}