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程序和两矩阵相乘相关推荐

  1. 浏览器运行java的方法_通过浏览器运行java程序的两种方法

    方法一:Applet技术 现在有一个application,要把它转换成Applet. 首先,用eclipse打开这个项目. 然后找到要改的java类,让这个类继承Applet类或者JApplet类. ...

  2. C C++实现两矩阵相乘--模拟法

    目录 前言 数学中两矩阵怎么相乘? C/C++语言实现 运行结果 前言 11月左右大三找日常实习的时候,面试乱杀,但是笔试碰到了这个矩阵相乘的编程题有几次,可能脑瓜子晕,突然被绕来绕去写不出来,很无语 ...

  3. 在Java中实现两数相乘

    要实现两数相乘算总额:input1.value() * input2.value() 如果直接获取到两个input值相乘,那么结果就有一点点小偏差,是因为精度缺失 $("#totalSum& ...

  4. Java程序员两年校招笔记总结分析——菜鸡求职

    写在前面,本文主要聊的是我的经历,如果想看总结的经验,可以跳到最后. 2018年春,在家过完春节, 过完十一,回学校.第一周还是自以为是的浪,泡馆看书,记得当时看完了<镜花缘>,还有的忘了 ...

  5. Java程序员两次美团面试失败后,含泪整理自己的面试经历

    说起来,职场上很多事情,只能用一个"缘分"来解释.近日在职场论坛上看到有员工发帖,他说自己在面试时遇到了一件最悲哀的事情?在上个月去美团面试的时候,由于发挥不太好,面试挂了.当时那 ...

  6. Java程序练习-螺旋矩阵

    螺旋矩阵时间限制: 1500ms内存限制: 1000kB 描述生成一个NxN(N>0)的旋转矩阵,N从键盘输入,每4个字符输出一个数字,右对齐,从1开始至NxN,顺时针成螺旋状,例如:输入4则生 ...

  7. java反向链表列表写法,一个使用链表追加,反向和显示的java程序

    it is a java program to append, reverse and display the program using linked list What I have tried: ...

  8. 两矩阵相乘的秩的性质_MIT—线性代数笔记04 矩阵的LU分解

    第04讲 矩阵的LU分解 Factorization into A=LU 04 A的LU分解​v.youku.com 本节的主要目的是从矩阵的角度理解高斯消元法,最后找到所谓的L矩阵,使得矩阵A可以转 ...

  9. matlab 多个矩阵相乘,两矩阵相乘

    请教各路大神!请问大家,我的两个矩阵怎么相乘啊?我的代码怎么都运行不起.能否请知道的大神帮我看看代码哪里有问题?拜托!! clear k1 = 0.289; k2 = 0.793/5000; k3 = ...

最新文章

  1. React-Native android在windows下的踩坑记
  2. python读取数据库之给变量_使用Python和SQLite,如何将数据库中的项读入变量?
  3. Openshift API部分源码学习笔记(一)
  4. java版本lstm_LSTM java 实现
  5. 在Winform中菜单动态添加“最近使用文件”
  6. java向后兼容吗_Java向后不兼容历史的观察
  7. HDU4812-D Tree-树分治
  8. 我从小米裸辞后进Shopee了...
  9. Tomcat启动时报org.springframework.web.context.ContextLoaderListener错误解决方案
  10. spring boot英语在线学习系统毕业设计-附源码211714
  11. 小米游戏本8代加装固态硬盘系统迁移
  12. 二工大计算机专业,二工大 上海第二工业大学 计算机专业英语 期末考试
  13. Linux中reboot和shutdown的异同
  14. 界面设计中如何增强CTA按钮召唤力?
  15. AWS GWLB集成FortiGate防火墙
  16. 如今,我们为什么很难看到高质量的文章?
  17. 快速去除GIF动图的背景(让背景变透明),保姆级教程
  18. 切断电源之后计算机丢失的,电脑断电重启找不到硬盘该咋办?
  19. 车联网上云最佳实践 七
  20. 2021美赛E题题译+思路+参考资料

热门文章

  1. linux给所有主机发送公钥,发送公钥到多台远程主机
  2. java鼠标监听事件_JAVA 鼠标事件监听ACTIONLISTENER
  3. linux sed给空文件首行插入_linux下批量修改文件后缀名以及合并多行
  4. 一周一论文(翻译)——[Acta 1996] The Log-Structured Merge-Tree (LSM-Tree)
  5. win2012中让IIS同时支持多版本ASP.NET 3.5/4.0/4.5的方法
  6. H5 canvas 绘图
  7. 软件工程第二次作业——模仿主流网站:搜狗输入法
  8. 防止js全局变量污染方法总结-待续
  9. 4.Hibernate O/R 映射
  10. Swift - 多线程GCD详解