只要深入,一切就不是显得那么困难
2011-01-24 22:05
218 查看
艾老师的这句话或许是用比较平淡的语气说的,但这句话本人发现得到应验。又发现了一位牛人。年龄和我般大,但技术水平,唉。keep moving.总算解决怎么读取矩阵的疑惑了。这其实也算不了什么问题。只是我不够深入。今天任务也分配了。下面上代码。两个矩阵要在一个文件中。
/* 说明:请将待相乘的矩阵内容保存为文本文件,之后在程序运行时输入文件名以打开 格式: X1 Y1 //第一个矩阵的行数和列数 以下X1行Y1列的整数,用空格分开,为第一个矩阵的内容 X2 Y2 //第二个矩阵的行数和列数 以下X2行Y2列的整数,用空格分开,为第二个矩阵的内容 */ import javax.swing.*; import java.io.File; import java.awt.*; import javax.swing.JOptionPane; public class MatrixMultipler extends JFrame{ private static final long serialVersionUID = 1L; public MatrixMultipler(String title){ //初始化窗体的各种属性,并显示窗体 this.setTitle(title); this.setSize(500,400); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setLocationRelativeTo(null); this.setLayout(new GridLayout(2,1,5,5)); this.setVisible(true); } public static void main(String[] args) { int x1,y1,x2,y2; //存储两个矩阵的行列数 //Mat1, Mat2是待相乘的两个矩阵, Mat3存放相乘后的结果 int[][] Mat1; int[][] Mat2; int[][] Mat3; MatrixMultipler MainFrame=new MatrixMultipler("Lieo Matrix Multipler"); //在窗体中添加两个文本框,用于显示计算前后的矩阵 JTextArea txtOri=new JTextArea(); JTextArea txtRes=new JTextArea(); //将文本框置于JSrollPane中,以便添加滚动条 JScrollPane Panel1=new JScrollPane(txtOri); JScrollPane Panel2=new JScrollPane(txtRes); MainFrame.add(Panel1); MainFrame.add(Panel2); try { int i,j,k; String FileName=JOptionPane.showInputDialog(MainFrame, "请输入矩阵存放的文件名称(包括路径):","D://input.txt"); //txt1和txt2分别存储要在文本框中显示的内容 String txt1="A="; String txt2="A*B="; File finput=new File(FileName); java.util.Scanner scnInput=new java.util.Scanner(finput); //读入第一个矩阵的行列数 x1=scnInput.nextInt(); y1=scnInput.nextInt(); //读入第一个矩阵的内容 Mat1=new int[x1][y1]; for (i=0;i<x1;i++) { txt1+="/n"; for (j=0;j<y1;j++) { Mat1[i][j]=scnInput.nextInt(); txt1+=Mat1[i][j]+" "; } } txt1+="/n/nB="; //读入第二个矩阵的行列数 x2=scnInput.nextInt(); y2=scnInput.nextInt(); //读入第二个矩阵的内容 Mat2=new int[x2][y2]; for (i=0;i<x2;i++) { txt1+="/n"; for (j=0;j<y2;j++) { Mat2[i][j]=scnInput.nextInt(); txt1+=Mat2[i][j]+" "; } } txtOri.setText(txt1); scnInput.close(); //如果第一个矩阵的列数与第二个矩阵的行数不相等,则不允许相乘 if (y1!=x2) { JOptionPane.showMessageDialog(null, "第一个矩阵的列数与第二个矩阵的行数不相等,不允许相乘。"); MainFrame.dispose(); return; } Mat3=new int[x1][y2]; for(i=0;i<x1;i++) for(j=0;j<y2;j++) for(k=0;k<y1;k++) Mat3[i][j]+=Mat1[i][k]*Mat2[k][j]; for (i=0;i<x1;i++) { txt2+="/n"; for (j=0;j<y2;j++) txt2+=Mat3[i][j]+" "; } txtRes.setText(txt2); } catch (Exception ex) { JOptionPane.showMessageDialog(null, "文件读取错误。/n可能文件不存在或文件内容有误。/n错误信息:"+ex); MainFrame.dispose(); return; } } }
相关文章推荐
- 很多事情不是因为困难而不去做,而往往是因为不去做才显得困难
- 一切都显得那么苍白无力
- 只要人的内心够强大,一切都不是事
- SUM 是SQL语句中的标准求和函数,如果没有符合条件的记录,那么SUM函数会返回NULL。但咱们想返回的是0而不是Null
- 程序员不是神,态度决定一切
- javascript prototype的深度探索不是原型继承那么简单第1/3页
- 深入理解Java中没那么简单的单例模式
- WebLogic性能:速度不是一切
- java提供的类库,并不是一切都能支持你现有的功能的,要敢于编写自己的类。
- 其实“指针”也没那么困难
- 一切都那么突然,一切都那么自然
- 屏幕不是那么容易变黑的。。。。。。 推荐
- 想“跟”在后面?不是那么简单的事情 推荐
- 一切都是骗局 Windows 8并不是很牛X 推荐
- 生活不是那么美好!
- 软件工程不是想象中那么简单
- 深入理解javascript原型和闭包(1)——一切都是对象
- 开发linux设备驱动程序并不是想象的那么难
- 深入理解javascript原型和闭包(1)——一切都是对象
- 程序设计师不是那么好当的 (真实案例一起动动脑)