- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验(二) 数组
一、实验目的和要求
掌握数组的定义、初始化与使用
掌握Java文档注释及文档生成方法
二、实验内容和原理
设计一个矩阵类Matrix,包含一个元素类型为int的二维数组,分别设计一个静态方法和实例方法把矩阵转置,分别设计静态方法和实例方法实现二个矩阵相加、相乘。重写方法toString(),使其能输出此矩阵。
三、实验环境
硬件环境:方正品牌机
软件环境:JDK1.5
四、算法描述及实验步骤
算法描述(可以用流程图、伪代码或源程序描述)
toString():将矩阵值转成字符串输出;
transportMatrix():将矩阵转置
transportMatrix(Matrix newMat):转置矩阵静态方法
plus():矩阵相加
plus(Matrix first, Matrix second):矩阵相加静态方法
times():矩阵相乘
times(Matrix first, Matrix second):矩阵相乘静态方法
实验步骤
输入源代码
进行编译
进行测试,使用的测试用例:
输入:
int[][] a = {{1, 2, 3}, {1, 2, 3}};
int[][] b = {{0, 1, 1}, {1, 0, 1}, {1, 1, 0}};
预期输出:
转置矩阵(静态与实例结果应相同):
1 1
2 2
3 3
加法(静态与实例结果应相同):
2 4 6
2 4 6
乘法(静态与实例结果应相同)
5 4 3
5 4 3
五、调试过程
编译过程
静态方法中调用了直接调用了非静态方法,造成“无法从静态上下文中引用非静态方法”的错误;
toString()方法中,第二个for循环应是j++,但是打成了i++,导致溢出错误。
转置方法transportMatrix()赋值的i、j位置写错,导致溢出错误。
第一个for循环用了i控制,第二个用了j控制
原始为:mtx[i][j] = data[j][i];
应改为:mtx[j][i] = data[i][j];
在写静态方法时,还是一样把所有算法都写了一边,但这样实际上是代码重复了,后来参照别人的改成了直接返回第一个参数调用实例方法,如:
加法算法的第二个for循环写错,导致溢出错误:
第二个for循环中的 i data[i].length,应改为j data[i],length;
调试过程
输入:
预期输出:
实际输出:
分析:
乘法运算无法输出,溢出错误!原因是乘法赋值中,行和列搞错了,如下:
应把最后一局mtx[k][i] = r;修改为mtx[i][k];
六、实验结果
输入:
输出结果:
结果正确。
在每个函数前面都加上注释,如:
然后点击:运行——生成Javadoc可生成html网页文档。
七、总结
通过本次实验,我基本掌握了声明与使用基本数据类型和数组的方法,同时也基本掌握了Java文档注释和生成Javadoc文档的方法。
编程的过程中主要的还是粗心大意的错误,导致了几个地方的溢出现象。做本次实验的时候,我的面向对象的思想仍不是很明确,在转置方法transportMatrix、加法plus、乘法times等方法中,返回的和传入的仍只是整型的二维数组,而不是一个矩阵对象,偏向了面向过程的变成方法,不符合现在的编程模式,所以原本已经写好的代码又打翻重写了一次。
另外,因为经常用一个类文件就解决一整个程序,所以并没有注意到说,当使用多个类文件来写程序时,所用到的包必须在各自的类上头再导入一次。比如:JOptionPane。
矩阵的乘法运算相对来说比较复杂,需要考虑到同型矩阵相乘、非同型矩阵相乘的情况,因此在用for控制循环时,就必须得用到i、j、k三个变量来进行控制,同时在赋值的时候也必须考虑好变量的书写位置,如本次实验中的mtx[i][k] = r;r行列相乘后相加的结果。
附录:
// main.java主类
package exp02code;
import javax.swing.JOptionPane;
/**
*
* @author Administrator
*/
public class Main {
/**
* @param args the command line arguments
* 主函数
*/
public static void main(String[] args) {
int[][] a = {{1, 2, 3}, {1, 2, 3}};
int[][] b = {{0, 1, 1}, {1, 0, 1}, {1, 1, 0}};
//
文档评论(0)