转圈显示的Java程序和两矩阵相乘
1.转圈显示的Java程序,将N x N的方阵转圈赋值并显示输出。如图:N=8,8x8方阵转圈填数结果。
解析:这是一个依靠矩阵中每个元素的下标对其进行操作的典型事例。其要求将1~NXN之间的整数按照从外向里的顺时针方向将其放入其中,并显示输出。
文件名:
RotatitonClass.java
下面是这个程序的代码:
package javaapplication1;
public class RotatitonClass {
public static final int N=8; //方阵的大小
public static void main(String[] args) {
int[][] m = new int[N][N]; //创建N x N的方阵
rotating(m,N); //向方阵中填写数值
printSquareMatrix(m,N); //显示方阵
}
public static void rotating(int[][] m,int num) //向方向中填写数值
{
int k = 1; //将要填写的数值
for (int i = 0; i<=num/2;i++) //将要填写的圈数
{
for (int j=i;j<num-i;j++) //上方行方向
{
m[i][j]=k++;
}
for (int j=i+1;j<num-i;j++) //右侧列方向
{
m[j][num-i-1]=k++;
}
for (int j=num-i-2;j>=i;j--) //下方行方向
{
m[num-i-1][j]=k++;
}
for (int j=num-i-2;j>i;j--) //左侧方向
{
m[j][i]=k++;
}
}
}
public static void printSquareMatrix(int[][] m,int num) //显示方阵
{
System.out.println();
for (int i=0;i<num;i++)
{
for (int j=0;j<num;j++)
{
System.out.printf("%4d", m[i][j]);
}
System.out.println();
}
}
}
在上述小Java程序中,除main主函数外,还定义了2个成员函数,成员函数rotating用于实现按照要求为方阵转圈填数的操作;成员函数printSquareMatrix用于显示方阵。
成员函数rotating是这个程序的核心,它采用每次循环一次填写一圈的算法将NxN个整数填入方阵中。具体做法是从外向内依次填写每圈的内容,每圈按照上、右、下、左的顺时针顺序填写。每圈需要填写的元素数量由方阵大小(num)和圈数(i)决定。
2. 利用二维数组表示矩阵,并实现两个矩阵相乘的操作。
解析:矩阵可以用来表示统计数据等方面的各种有关联的数据。在数学上,矩阵可以是由方程组的系数及常数构成的方阵。在矩阵的运算中,要求两个相乘的矩阵必须满足第1个矩阵的列数等于第2个矩阵的行数。即对于 Am1×n1和Bm2×n2,要求n1=m2,且结果矩阵C的行列数为m1×n2,其中的每个元素内容为
文件名:Matrix.java
一下是程序的代码:
package javaapplication3;
public class Matrix {
public static final int M1 = 8; //第1个矩阵的行数
public static final int N1 = 5; //第1个矩阵的列数
public static final int M2 = 5; //第2个矩阵的行数
public static final int N2 = 6; //第2个矩阵的列数
public static void main(String[] args) {
int [][] a =new int[M1][N1]; //创建第1个矩阵
int [][] b =new int[M2][N2]; //创建第2个矩阵
enterMatrix(a,M1,N1); //输入第1个矩阵
enterMatrix(b,M2,N2); //输入第2个矩阵
printMatrix(a,M1,N1); //显示第1个矩阵
printMatrix(b,M2,N2); //显示第2个矩阵
if (N1==M2)
{
int[][] c = new int[M1][N2];
MulMatrix(a,M1,N1,b,M2,N2,c);
printMatrix(c,M1,N2);
}
}
public static void enterMatrix(int[][] m, int row, int col) { //输入矩阵
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
m[i][j] = (int) Math.round(Math.random() * 10);
}
}}
public static void printMatrix(int[][] m, int row, int col) { //显示矩阵
System.out.println();
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
System.out.printf("%4d",m[i][j]);
}
System.out.println();
}
System.out.println();
}
//两矩阵相乘
public static void MulMatrix(int[][] a, int row1, int col1, int[][] b, int row2, int col2, int[][] c) {
for (int i = 0; i < row1; i++) {
for (int j = 0; j < col2; j++) {
c[i][j] = 0;
for (int k = 0; k < col1; k++) {
c[i][j] += a[i][k] * b[k][j];
} } }
}
}
运行效果:
第1个矩阵
第2个矩阵
两矩阵之乘积
上述程序中,除main函数外,还定义了3个成员函数,成员函数enterMatrix用于实现为矩阵赋值的操作;成员函数printMatrix用于显示矩阵;成员函数MulMatrix用于实现两个矩阵相乘的操作。
在成员函数enterMatrix中,为了避免调试程序时需要输入大量数据所带来的麻烦,利用Math类中提供的random这个随机函数产生0~1之间的数值,并经过乘以10再四舍五入的处理,映射为0~10之间的整数,以此模拟键盘的输入,这是在调试程序时经常用到的手段。(在里我们也可根据需要自己输入)
在成员函数printMatrix中,给出的是显示矩阵的常规格式,即外层控制行的输出,内层循环控制烈的输出,每行的内容输出完毕后执行一条换行语句,以此达到矩阵内容按照行列格式输出。
在成员函数MulMatrix中,利用三重循环实现了两个矩阵相乘的操作,这也是一种常规的书写格式。
转载于:https://blog.51cto.com/linuxme/391339
转圈显示的Java程序和两矩阵相乘相关推荐
- 浏览器运行java的方法_通过浏览器运行java程序的两种方法
方法一:Applet技术 现在有一个application,要把它转换成Applet. 首先,用eclipse打开这个项目. 然后找到要改的java类,让这个类继承Applet类或者JApplet类. ...
- C C++实现两矩阵相乘--模拟法
目录 前言 数学中两矩阵怎么相乘? C/C++语言实现 运行结果 前言 11月左右大三找日常实习的时候,面试乱杀,但是笔试碰到了这个矩阵相乘的编程题有几次,可能脑瓜子晕,突然被绕来绕去写不出来,很无语 ...
- 在Java中实现两数相乘
要实现两数相乘算总额:input1.value() * input2.value() 如果直接获取到两个input值相乘,那么结果就有一点点小偏差,是因为精度缺失 $("#totalSum& ...
- Java程序员两年校招笔记总结分析——菜鸡求职
写在前面,本文主要聊的是我的经历,如果想看总结的经验,可以跳到最后. 2018年春,在家过完春节, 过完十一,回学校.第一周还是自以为是的浪,泡馆看书,记得当时看完了<镜花缘>,还有的忘了 ...
- Java程序员两次美团面试失败后,含泪整理自己的面试经历
说起来,职场上很多事情,只能用一个"缘分"来解释.近日在职场论坛上看到有员工发帖,他说自己在面试时遇到了一件最悲哀的事情?在上个月去美团面试的时候,由于发挥不太好,面试挂了.当时那 ...
- Java程序练习-螺旋矩阵
螺旋矩阵时间限制: 1500ms内存限制: 1000kB 描述生成一个NxN(N>0)的旋转矩阵,N从键盘输入,每4个字符输出一个数字,右对齐,从1开始至NxN,顺时针成螺旋状,例如:输入4则生 ...
- java反向链表列表写法,一个使用链表追加,反向和显示的java程序
it is a java program to append, reverse and display the program using linked list What I have tried: ...
- 两矩阵相乘的秩的性质_MIT—线性代数笔记04 矩阵的LU分解
第04讲 矩阵的LU分解 Factorization into A=LU 04 A的LU分解v.youku.com 本节的主要目的是从矩阵的角度理解高斯消元法,最后找到所谓的L矩阵,使得矩阵A可以转 ...
- matlab 多个矩阵相乘,两矩阵相乘
请教各路大神!请问大家,我的两个矩阵怎么相乘啊?我的代码怎么都运行不起.能否请知道的大神帮我看看代码哪里有问题?拜托!! clear k1 = 0.289; k2 = 0.793/5000; k3 = ...
最新文章
- React-Native android在windows下的踩坑记
- python读取数据库之给变量_使用Python和SQLite,如何将数据库中的项读入变量?
- Openshift API部分源码学习笔记(一)
- java版本lstm_LSTM java 实现
- 在Winform中菜单动态添加“最近使用文件”
- java向后兼容吗_Java向后不兼容历史的观察
- HDU4812-D Tree-树分治
- 我从小米裸辞后进Shopee了...
- Tomcat启动时报org.springframework.web.context.ContextLoaderListener错误解决方案
- spring boot英语在线学习系统毕业设计-附源码211714
- 小米游戏本8代加装固态硬盘系统迁移
- 二工大计算机专业,二工大 上海第二工业大学 计算机专业英语 期末考试
- Linux中reboot和shutdown的异同
- 界面设计中如何增强CTA按钮召唤力?
- AWS GWLB集成FortiGate防火墙
- 如今,我们为什么很难看到高质量的文章?
- 快速去除GIF动图的背景(让背景变透明),保姆级教程
- 切断电源之后计算机丢失的,电脑断电重启找不到硬盘该咋办?
- 车联网上云最佳实践 七
- 2021美赛E题题译+思路+参考资料
热门文章
- linux给所有主机发送公钥,发送公钥到多台远程主机
- java鼠标监听事件_JAVA 鼠标事件监听ACTIONLISTENER
- linux sed给空文件首行插入_linux下批量修改文件后缀名以及合并多行
- 一周一论文(翻译)——[Acta 1996] The Log-Structured Merge-Tree (LSM-Tree)
- win2012中让IIS同时支持多版本ASP.NET 3.5/4.0/4.5的方法
- H5 canvas 绘图
- 软件工程第二次作业——模仿主流网站:搜狗输入法
- 防止js全局变量污染方法总结-待续
- 4.Hibernate O/R 映射
- Swift - 多线程GCD详解