精华内容
下载资源
问答
  • java任意矩阵二维数组输入输出
    2022-02-16 17:09:32

    任意矩阵以二维数组输入,以矩阵形式输出

    运行示例

    输入:
    [[3,7,8],[9,11,13],[15,16,17],[23,27,28]]
    输出:
    3 7 8 
    9 11 13 
    15 16 17 
    23 27 28 

    思路

    用字符串参数对输入进行接受并处理,处理步骤如下:

            (1)用substring()对字符串两头的中括号截掉

            (2)用spilt()分别划分每行元素和每行元素中每个数字

            (3)将数组由String转变为int方式储存

    代码

    import java.util.Scanner;
    
    public class two_dimensional_scanner {
    	/*
    	*输入任意矩阵并输出
    	*输入例子 [[3,7,8],[9,11,13],[15,16,17]]
    	*/
    	public static void main(String[] args) {
    		int[][] nums = new int[100][100];
    		int i = 0,j = 0,k = 0;
    		Scanner scanner = new Scanner(System.in);
    		String I = scanner.nextLine();           //接受当前行输入的信息,并返回跳过的输入信息。即输入回车结束输入
    		String S = I.substring(I.indexOf("[[")+2, I.lastIndexOf("]]"));
    		/*
    		* 此步是截取掉字符串中开头和结尾的两个中括号
    		* substring(int beginIndex,int endIndex) 该函数是截取字符串指定位置间的子字符串
    		* 该子字符串从指定的 beginIndex 处开始,直到索引 endIndex - 1 处的字符。
    		* indexOf(String str)       返回指定子字符串在此字符串中第一次出现处的索引。
    		* lastIndexOf(String str)   返回指定子字符串在此字符串中最右边出现处的索引。
    		* 注意:开头的中括号检索到的位置是第0位,我们要截去两个中括号,所以要加2。
    		*/
    		String[] trans = S.split("\\],\\[");
    		/*
    		 * 此步是将字符串中每行元素分开
    		 * split(String regex)  根据给定正则表达式的匹配拆分此字符串。
    		 * 注意:因为用的是正则表达式,所以在使用特殊字符(如 * | [ ] 等)时要进行转义。即在“[”和“]”前加“//”。
    		 */
    		for (String str : trans) {
    			j = 0;
    			String[] snum = str.split(",");   //此步是将每行元素中每个数字分开
    			for (String string : snum) {
    				nums[i][j++] = Integer.parseInt(string);  //将以字符串储存的数字转换成int方式
    			}
    			i++;
    			//判断二维数组是否是矩阵
    			if (i == 1) {
    				k = j;
    			}else {
    				if (j != k) {
    					try {
    						throw new Exception("该数组不是矩阵,第"+i+"行元素个数异常");
    					} catch (Exception e) {
    						e.printStackTrace();
    						System.exit(1);
    					}
    				}
    			}
    		}
    		//矩阵输出
    		for(int x = 0;x < i;x++){
    			for (int y = 0; y < j; y++) {
    				System.out.print(nums[x][y]+" ");
    			}
    			System.out.println();
    		}
    		scanner.close();
    	}
    }
    

    更多相关内容
  • java 二维数组矩阵乘法的实现方法,需要的朋友可以参考一下
  • 主要介绍了Java二维数组简单定义与使用方法,结合实例形式简单分析了java二维数组的定义、使用方法及相关注意事项,需要的朋友可以参考下
  • 主要介绍了Java编程一维数组转换成二维数组,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
  • 主要介绍了java实现二维数组转置的方法,结合实例形式详细分析了java二维数组转置的原理、实现步骤与相关操作技巧,需要的朋友可以参考下
  • 使用二维数组随机生成迷宫,里面总共有三份代码,都是迷宫生成的,相信有一份是适合你的。直接运行main方法就可运行,简单方便。
  • 前言 本篇文章主要总结了矩阵的常见运算,以及Java中利用二维数组进行运算的实现 1.矩阵运算 1.矩阵加法 运算前提:多个矩阵的行数和列数相同,我们称它们为同型矩阵,只有是同型矩阵才能进行加减运算。 运算规则:...

    0.前言

    本篇文章主要总结了矩阵的常见运算,以及Java中利用二维数组进行运算的实现

    1.矩阵运算

    1.矩阵加法

    1. 运算前提:多个矩阵的行数和列数相同,我们称它们为同型矩阵,只有是同型矩阵才能进行加减运算。
    2. 运算规则:两个矩阵相同位置的元素进行相加。

    [ 1 2 3 4 5 6 ] + [ 1 2 3 4 5 6 ] = [ 2 4 6 8 10 12 ] \left[ \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ \end{matrix} \right] + \left[ \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ \end{matrix} \right] = \left[ \begin{matrix} 2 & 4 & 6 \\ 8 & 10 & 12 \\ \end{matrix} \right] [142536]+[142536]=[28410612]

    2.矩阵减法

    1. 运算规则:同矩阵加法,对应元素相减即可。

    3.矩阵乘法

    1. 运算前提:两个矩阵的乘法仅当第一个矩阵的列数和另一个矩阵的行数相等。
    2. 运算规则:两个矩阵,第一个矩阵的行和第二个矩阵的列对应元素相乘再相加,m 行 n 列的矩阵 * n 行 k 列的矩阵,得到一个 m 行 k 列的矩阵。
      [ 1 2 3 4 5 6 ] ∗ [ 1 2 3 4 5 6 ] = [ 1 ∗ 1 + 2 ∗ 3 + 3 ∗ 5 = 22 1 ∗ 2 + 2 ∗ 4 + 3 ∗ 6 = 28 4 ∗ 1 + 3 ∗ 5 + 6 ∗ 5 = 49 4 ∗ 2 + 5 ∗ 4 + 6 ∗ 6 = 64 ] = [ 22 28 49 64 ] \left[ \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ \end{matrix} \right] * \left[ \begin{matrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \\ \end{matrix} \right] = \left[ \begin{matrix} 1*1 + 2*3+3*5 =22& 1* 2 + 2* 4 + 3* 6=28\\ 4 * 1 + 3 * 5 + 6* 5 = 49 & 4*2+5*4+6*6= 64\\ \end{matrix} \right] = \left[ \begin{matrix} 22 & 28 \\ 49 & 64 \\ \end{matrix} \right] [142536]135246=[11+23+35=2241+35+65=4912+24+36=2842+54+66=64]=[22492864]

    4.矩阵转置

    1. 运算规则:将矩阵的第 i 行 第 j 列 转换为 第 j 行 第 i 列
      [ 1 2 3 4 5 6 ] T = [ 1 4 2 5 3 6 ] \left[ \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ \end{matrix} \right] ^T = \left[ \begin{matrix} 1 & 4 \\ 2 & 5 \\ 3 & 6 \\ \end{matrix} \right] [142536]T=123456

    2.Java实现

    public class Matrix {
        public static void main(String[] args) {
            int[][] a = {{1, 2, 3}, {4, 5, 6}};
            int[][] b = {{1, 2}, {3, 4}, {5, 6}};
    
            System.out.println(Arrays.deepToString(randomMatrix(3, 2)));
        }
    
        /**
         * 生成随机矩阵 m行n列
         * @return
         */
        public static int[][] randomMatrix(int m, int n){
            int[][] ans = new int[m][n];
            // 生成随机矩阵
            Random rand = new Random();
            for (int i = 0; i < m; i++)
                for (int j = 0; j < n; j++) {
                    ans[i][j] = rand.nextInt(10);
                }
            return ans;
        }
    
    
        /**
         * 矩阵加减法
         */
        public static int[][] addOrSub(int[][] a, int[][] b, boolean isPlus) {
            // 不满足加减法条件
            if (a.length != b.length || a[0].length != b[0].length) return new int[0][0];
    
            for (int i = 0; i < a.length; i++)
                for (int j = 0; j < a[0].length; j++) {
                    if (isPlus)
                        a[i][j] += b[i][j];
                    else
                        a[i][j] -= b[i][j];
                }
            return a;
        }
    
        /**
         * 矩阵乘法
         */
        public static int[][] multiply(int[][] a, int[][] b) {
            int m = a.length;
            int n = a[0].length;
            int n1 = b.length;
            int k = b[0].length;
            // 不满足乘法条件
            if (n != n1) return new int[0][0];
    
            // 构建一个 m 行 k 列的矩阵
            int[][] ans = new int[m][k];
            for (int i = 0; i < m; i++) {
                for (int j = 0; j < k; j++) {
                    int temp = 0;
                    for (int l = 0; l < n; l++) {
                        temp += a[i][l] * b[l][j];
                    }
                    ans[i][j] = temp;
                }
            }
            return ans;
        }
    
        /**
         * 转置
         */
        public static int[][] zhi(int[][] a) {
            int m = a.length;
            int n = a[0].length;
            int[][] ans = new int[n][m];
            for (int i = 0; i < n; i++)
                for (int j = 0; j < m; j++)
                    ans[i][j] = a[j][i];
            return ans;
        }
    }
    
    
    展开全文
  • 展开全部importjava.util.Random;publicclassText2{publicstaticvoidmain(String[]args){Matrixs3=newMatrix(4,3);Matrixs4=newMatrix(3,3);s3.printMatrix();System.out.println("------------------...

    展开全部

    import java.util.Random;

    public class Text2 {

    public static void main(String[] args){

    Matrix s3 = new Matrix(4, 3);

    Matrix s4 = new Matrix(3, 3);

    s3.printMatrix();

    System.out.println("----------------------");

    s4.printMatrix();

    s3.mulMatrix(s4);

    s3.printMatrix();

    }

    public static class Matrix {

    private int[][] a;

    Random random = new Random();

    // 构造方法e69da5e887aa3231313335323631343130323136353331333264656665

    public Matrix() {

    a = new int[3][3];

    }

    public Matrix(int n) {

    a = new int[n][n];

    for (int i = 0; i 

    for (int j = 0; j 

    a[i][j] = random.nextInt(100);

    }

    }

    }

    public Matrix(int n, int m) {

    a = new int[n][m];

    for (int i = 0; i 

    for (int j = 0; j 

    a[i][j] = random.nextInt(100);

    }

    }

    }

    public int[][] getMatrix() {

    return a;

    }

    // 打印一个矩阵

    public void printMatrix() {

    for (int i = 0; i 

    for (int j = 0; j 

    System.out.print(a[i][j] + "\t");

    }

    System.out.println();

    }

    }

    // 矩阵相加

    public void plusMatrix(Matrix b) {

    int[][] c = b.getMatrix();

    int n = c.length;

    int m = c[0].length;

    if (n != a.length || m != a[0].length) {

    System.out.println("长度不一,不能相加");

    } else {

    for (int i = 0; i 

    for (int j = 0; j 

    a[i][j] = a[i][j] + c[i][j];

    }

    }

    }

    }

    // 矩阵相乘

    public void mulMatrix(Matrix b) {

    int[][] c = b.getMatrix();

    int n = c.length;

    int m = c[0].length;

    if (n != a[0].length) {

    System.out.println("第一个矩阵的列数不等于第二个矩阵的行数,不能进行乘法运算");

    } else {

    for (int i = 0; i 

    for (int j = 0; j 

    for (int k = 0; k 

    a[i][j] += (a[i][k] * c[k][j]);

    }

    }

    }

    }

    }

    }

    }

    4ef4fc03a5e539ab0698fd1fba43c4e7.png

    展开全文
  • 主要介绍了利用Java如何实现顺时针输出螺旋二维数组的方法示例,文中给出了详细的示例代码和注释,相信对大家具有一定的参考价值,有需要的朋友们下面来一起看看吧。
  • import java.util.Random; class MatrixTower { public static void main(String[] args) { //声明一个矩阵空间 int[][] matrix = new int[][]{ {-1,12,4,0,7,-5,6,7,7,4,0,0,-5,2,-4}, {-1,65,4,0,7,-5,6...

    在这里插入图片描述

    
    import java.util.Random;
    
    
    class MatrixTower {
    
    
        public static void main(String[] args) {
    
            //声明一个矩阵空间
            int[][] matrix = new int[][]{
                    {-1,12,4,0,7,-5,6,7,7,4,0,0,-5,2,-4},
                    {-1,65,4,0,7,-5,6,1,7,4,0,0,-15,1,-4},
                    {-1,10,4,0,8,-5,2,5,17,4,0,0,-5,6,-4},
                    {-1,2,4,0,14,-5,6,3,7,4,0,0,-34,2,-4},
                    {-1,47,4,0,26,-5,6,9,7,4,0,0,-9,4,-4},
                    {-1,0,14,0,7,-5,6,8,10,4,0,0,4,11,201},
            };
    
    
            //矩阵行长度
            int tmp=matrix[0].length;
            int u = matrix.length-1;
            int v = matrix[u][tmp/2]-1;
    
            // 需求: 最下行 中心列 为中心点 => 起始点
            int startPoint = matrix[u][v];
    
    
            //起始点的行
    
    
            //起始点的列
            int startPointColumn = 0;
    
            //得到起始点的列
            for (int i = 0; i <tmp; i++) {
                if (matrix[u][i] == startPoint) {
                    startPointColumn = i;
                }
            }
    
    
            //随机数类
            Random random = new Random();
    
            //随即矩阵行
            int randomRow = random.nextInt(matrix.length - 1);
            //随机矩阵列
            int randomColumn = random.nextInt(tmp/2-1);
    
    
            maxNumberSum(startPoint, u, startPointColumn, randomColumn, matrix);
    
        }
    
    
        //求移动路径sum
        private static void maxNumberSum(int startPoint, int startPointRow, int startPointColumn,  int randomColumn, int[][] matrix) {
    
    
            System.out.println("当前 起始点:" + startPoint);
    
    
            //左移动 matrix[length - 1][length / 2 - -] startPointColumn--
            // 右移动 matrix[length - 1][length / 2 ++] startPointColumn++
            // 上移动 matrix[(length - 1)--][length / 2 ] startPointRow--
    
            //这里默认为 上移动: matrix[(length - 1)--][length / 2] startPointRow--
    
            System.out.println("矩阵起始行:" + startPointRow);
            System.out.println("矩阵起始列:" + startPointColumn);
            System.out.println("随机列:" + randomColumn);
    
            System.out.println("移动方式 右移动:");
    
            //路径和
            int sum = 0;
    
            do {
    
                int num = matrix[startPointRow][++startPointColumn];
    
                System.out.println("向右移动"+randomColumn + "次 经过 元素:" + num);
                sum += num;
    
            } while (--randomColumn != 0);
    
            startPoint += sum;
    
            System.out.println("路径求合:" + startPoint);
        }
    
    }
    
    
    展开全文
  • NULL 博文链接:https://liangjian103.iteye.com/blog/1101210
  • 若A为NxM阶矩阵 B为MxP阶矩阵,二者相乘之后的矩阵则为NXP阶矩阵 运算过程: 思路 计算并显示出来这个结果 我们则需要 一个计算方法 和 一个显示方法 因此主函数可以写的相当之简单 , 键入想要求解的矩阵的数值 ...
  • 1. Java二维数组输出<1> (1) 输出结果右对齐"%5d" (2) 输出结果: 2.Java二维数组输出<2> (1) 输出结果左对齐"%-5d" (2) 输出结果: 3.我想试试,输出长度超过5会怎么样 (1) 输出...
  • java】使用二维数组输出矩阵

    万次阅读 2017-03-23 11:04:19
    使用二维数组输出矩阵
  • 在编程语言中矩阵可以用一个二维数组进行模拟,如下图所示:矩阵二维数组大多数高级语言中,都支持二维数组,用二维数组来实现矩阵是非常容易的,编程语言更多的是用来模拟矩阵的加减操作以及移动操作。2. 矩阵的...
  • 第一次上传自己的资源分享下(需要JDK才可)
  • 二维数组小练习

    2019-02-20 14:52:22
    二维数组小练习~
  • 主要介绍了Java编程中二维数组的初始化和基本操作实例,是Java入门学习中的基础知识,需要的朋友可以参考下
  • 由于本人也是java初学者,在代码中已有详细的注释(防止自己将来读不懂自己曾写的代码),所以不在文字方面过多赘述。 补充说明:使用的jdk版本为1.8 package hello; import java.io.BufferedReader; import java.io...
  • Java二维数组转置(矩阵转置)

    千次阅读 2020-10-08 23:16:52
    public static void main(String[] args) { ... System.out.println("请输入二维数组的行:"); int h = sc.nextInt(); System.out.println("请输入二维数组的列:"); int l = sc.nextInt(); arr(h,l); } .
  • java中二维数组实现矩阵的转置

    千次阅读 2020-09-07 10:04:13
    给定一个矩阵 A, 返回 A 的转置矩阵矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。 示例说明 代码部分 package hlzcc.demo; //力扣 867 转置矩阵 // 尺寸为 R x C 的矩阵 A 转置后会得到...
  • Java二维数组输出

    万次阅读 2020-10-27 20:03:57
    Java二维数组输出<1> (1) 输出结果右对齐"%5d" public class HelloWorld { public static void main(String[] args){ int myArray[ ][ ] = { {1,2}, {7,2}, {3,4} }; for(int i=0; i<3; i++){ for ...
  • java与旋转二维数组

    2014-12-17 17:27:01
    java与旋转二维数组 - 领域模型
  • java代码输出二维数组

    千次阅读 2021-04-12 17:55:36
    下午做作业,碰到一个java二维数组的题,结果我就犯2了,愣是没看清数组的个数,导致敲了一遍代码才看出来。public class Xiti8 {public static void main(String[] args) {double a[][] = { { 1, 2, 3 }, { 4, 5, 6...
  • 任务描述 本关任务:对给定的矩阵做转置操作。 什么是矩阵矩阵是一个由 m 行(row)n 列(column)元素排列成的矩形阵列,以下是一个 2 行 3 列的矩阵: ...注意:矩阵可以用二维数组表示。 编程要求
  • 主要介绍了Java编程实现的二维数组转置功能,结合实例形式分析了Java二维数组的遍历、运算、赋值等实现转置的相关操作技巧,需要的朋友可以参考下
  • 数组的一些特性java数组要求所有的元素具有相同的数据类型,因此一个数组只能存储一种数据类型的数据,而不能存储多种数据类型的数据。比如你这个数组是int类型的数组,那这个数组就不能存储boolean float...
  • 编写一个方法,求整数矩阵中特定列的所有元素的和,使用下面的方法头: public static double sum...import java.util.Scanner; class Demo1_4{ public static void main(String[] args){ // TODO Auto-generated
  • 一、二维数组以及多维数组1、二维数组的定义:?在一维数组中定义每一个元素也是一个数组元素,这样的数组称为”二维数组“?多维数组就是在一维数组上再次定义二维数组或三位数组等。?一维数组定义int [] array={1,2,...
  • 本篇文章小编给大家分享一下Java二维数组查找功能实现代码,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,220
精华内容 9,288
关键字:

java二维数组输出矩阵

java 订阅