谁能帮忙解释下这几行是什么意思,谢谢。

问题描述

public class Matrix { int rows; int cols; double data[][]; public Matrix() { this(0, 0); } public Matrix(int rows, int cols) { this(rows, cols, new double[rows][cols]); //后面为什么要创建new double[rows][cols] } public Matrix(int rows, int cols, double[][] data) { super(); //为什么要调用父类的构造方法 this.rows = rows; this.cols = cols; this.data = data; } public double getData(int row, int col) { return data[row][col]; } public void setData(int row, int col, double value) { data[row][col] = value; } public double[][] multiply(double[][] m2) { int m1rows = data.length; int m1cols = data[0].length; int m2rows = m2.length; int m2cols = m2[0].length; if (m1cols != m2rows) throw new IllegalArgumentException("matrix doesn't match"); double[][] result = new double[m1rows][m2cols]; // multiply for (int i = 0; i < m1rows; i++) for (int j = 0; j < m2cols; j++) for (int k = 0; k < m1cols; k++) result[i][j] += data[i][k] * m2[k][j]; return result; } public String toString() { StringBuffer sb = new StringBuffer(); int rows = data.length; int cols = data[0].length; sb.append("array[" + rows + "][" + cols + "] = " + "n"); for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) sb.append(" " + data[i][j] + " "); sb.append("n"); } sb.append("n"); return sb.toString(); } public static void main(String[] argv) { double x[][] = { { 3, 2, 3 }, { 5, 9, 8 }, }; Matrix m = new Matrix(3, 2, x); double y[][] = { { 4, 7 }, { 9, 3 }, { 8, 1 }, }; double z[][] = m.multiply(y); Matrix zm = new Matrix(z.length, z[0].length, z); // print result System.out.println(zm); } }

解决方案

this(rows, cols, new double[rows][cols]); //后面为什么要创建new double[rows][cols] 这句话的意思就是调用该类的其他构造方法,你底下还有个构造方法,如果你有看JDK底层代码,里面有很多都有N种构造方法,一环镶嵌一环,这是设计的时候设计的public Matrix(int rows, int cols, double[][] data) {//也就是调用这句 super(); //为什么要调用父类的构造方法 this.rows = rows; this.cols = cols; this.data = data; } 至于为什么要调用父类,你这没有使用继承,应该没什么用 public String toString() { StringBuffer sb = new StringBuffer(); int rows = data.length; int cols = data[0].length; sb.append("array[" + rows + "][" + cols + "] = " + "n"); for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) sb.append(" " + data[i][j] + " "); sb.append("n"); } sb.append("n"); return sb.toString(); } toString 是从写方法,也就是如果你需要打印出该类,只要直接调用new Matrix();就OK了
解决方案二:
this(rows, cols, new double[rows][cols]); //后面为什么要创建new double[rows][cols] 这个之所以要创建new double[rows][cols]是为了传递给this()方法,this()方法指的就是下面那个public Matrix(int rows, int cols, double[][] data)为什么要调用父类的构造方法 这个调用父类构造方法多余,直接去掉就可以toString()方法中的那些代码都是为了生成可以阅读的Matrix信息,这样如果你System.out.println(new Matrix())的时候JAVA或自动调用这个toString()方法把这些比较容易看懂的矩阵信息输入到控制台
解决方案三:
this(rows, cols, new double[rows][cols]); //后面为什么要创建new double[rows][cols] ??这个是给data数组了一个初始大小,默认大小是0。super(); //为什么要调用父类的构造方法??这个调用无任何意义,可以不调。后面toString是想让输出格式显示的好看一点。

时间: 2024-09-17 04:42:58

谁能帮忙解释下这几行是什么意思,谢谢。的相关文章

求高手帮忙解释下这个如何转换过来的,谢谢!

问题描述 对应块的加密字6个字节,共以12个字符表示如FFFFFFFFFFFFH表示为'FFFFFFFFFFFF'(十六进制12个字节46H) 解决方案 解决方案二:不懂意思

跪求-谁能帮忙解释下android中的TranslateAnimation相关的下面代码,谢谢!!!

问题描述 谁能帮忙解释下android中的TranslateAnimation相关的下面代码,谢谢!!! @Override10 public void onPageSelected(int arg0) {11 Animation animation = null;12 switch (arg0) {13 case 0:14 if (currIndex == 1) {15 animation = new TranslateAnimation(one 0 0 0);16 } else if (cu

请帮忙解释下Collenction变量为空的原因

问题描述 import java.sql.*;public class ConnDB {private Connection ct = null;public static void main(String args[]){ConnDB cdb = new ConnDB();System.out.println(cdb.getConn());}public Connection getConn(){try{Class.forName("com.microsoft.sqlserver.jdbc.S

对象-java 抽象类有段代码没看懂!!!帮忙解释下

问题描述 java 抽象类有段代码没看懂!!!帮忙解释下 自己看视频自学到网络编程,发现下边的代码看不懂,自己也百度了很多,还是没理解好抽象类 OutputStream os=Socket.getOutputSteam(); os.write("加油".getBytes()): 这段代码没看懂,OutputStream抽象类不能直接创建对象,也没有子类去实现,为什么可以直接调用write(byte[] b) 方法? 解决方案 不能创建对象的意思是不能通过new outputstream

new regexp()-求大虾们帮忙解释下有关compile的正则表达式代码

问题描述 求大虾们帮忙解释下有关compile的正则表达式代码 function(str) { //str= http://localhost:63342/erajs.examples/./ccs/html/CcsDealInput.html var RegUrl = new RegExp(); RegUrl.compile("^[A-Za-z]+://[A-Za-z0-9-_]+.[A-Za-z0-9-_%&?/.=]+$"); if (!RegUrl.test(str))

java后台逻辑问题-求大神帮忙解释下这段代码。

问题描述 求大神帮忙解释下这段代码. 这是一个从表添加页面的代码.currentx是当前页数.我想问下 st st1 st2 st3是什么意思,就是split(:):这个方法我不是很清楚什么意思,还有下面的!ss.equals("t") t是什么. 传参什么的我晓得. @RequestMapping("/addProcess.do") public String addProcessMaintenance(String currentx, String ids, S

oracle11g-linux安装oracle11 rac集群,报错,请专家帮忙解释下是哪里问题,感谢

问题描述 linux安装oracle11 rac集群,报错,请专家帮忙解释下是哪里问题,感谢 解决方案 图太小,看不清,建议参考:http://blog.chinaunix.net/uid-14779297-id-1988248.html 解决方案二: http://wenku.baidu.com/link?url=DpFOy89l9FBzJo0qul70p81mRk9vXwjlNNgISVaKRSSyPKGy9Yoq389lRVG9sXLeRaWl7j71IGIhRnYt9SJlOKtpT22

android-小白求助,求大神帮忙解释下加点注释~谢谢

问题描述 小白求助,求大神帮忙解释下加点注释~谢谢 package com.hanway.oa.activity; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.

哪位高手可以帮忙解释下try{}和catch{}的作用用法吗?

问题描述 小弟初学,哪位高手可以帮忙解释下try{}和catch{}的作用用法吗?不胜感激. 解决方案 解决方案二:如果try{}的{}中的语句在执行的过程中产生了异常(有很多种类),那么catch{}就可以把这个异常捕捉,当然这些异常有很多的种类,可以针对可能发生的不同的异常确定catch(){}的()中的参数类型,然后在{}中处理这些可能发生的异常.解决方案三:try语法简单点解释就是试试.当然试试的结果有可能成,有可能不成,所以有个catch.catch可以捕捉不同的失败原因.例如:try