-
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 二维数组矩阵乘法的实现方法
2020-09-05 13:04:32java 二维数组矩阵乘法的实现方法,需要的朋友可以参考一下 -
Java二维数组简单定义与使用方法示例
2020-08-29 04:13:51主要介绍了Java二维数组简单定义与使用方法,结合实例形式简单分析了java二维数组的定义、使用方法及相关注意事项,需要的朋友可以参考下 -
Java编程一维数组转换成二维数组实例代码
2020-08-28 04:44:13主要介绍了Java编程一维数组转换成二维数组,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下 -
java实现二维数组转置的方法示例
2020-08-29 04:17:47主要介绍了java实现二维数组转置的方法,结合实例形式详细分析了java二维数组转置的原理、实现步骤与相关操作技巧,需要的朋友可以参考下 -
java 二维数组 随机生成迷宫
2020-10-20 09:46:26使用二维数组随机生成迷宫,里面总共有三份代码,都是迷宫生成的,相信有一份是适合你的。直接运行main方法就可运行,简单方便。 -
【矩阵运算和Java二维数组对矩阵常见运算的实现】
2021-11-28 09:04:43前言 本篇文章主要总结了矩阵的常见运算,以及Java中利用二维数组进行运算的实现 1.矩阵运算 1.矩阵加法 运算前提:多个矩阵的行数和列数相同,我们称它们为同型矩阵,只有是同型矩阵才能进行加减运算。 运算规则:...0.前言
本篇文章主要总结了矩阵的常见运算,以及Java中利用二维数组进行运算的实现
1.矩阵运算
1.矩阵加法
- 运算前提:多个矩阵的行数和列数相同,我们称它们为同型矩阵,只有是同型矩阵才能进行加减运算。
- 运算规则:两个矩阵相同位置的元素进行相加。
[ 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.矩阵减法
- 运算规则:同矩阵加法,对应元素相减即可。
3.矩阵乘法
- 运算前提:两个矩阵的乘法仅当第一个矩阵的列数和另一个矩阵的行数相等。
- 运算规则:两个矩阵,第一个矩阵的行和第二个矩阵的列对应元素相乘再相加,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⎦⎤=[1∗1+2∗3+3∗5=224∗1+3∗5+6∗5=491∗2+2∗4+3∗6=284∗2+5∗4+6∗6=64]=[22492864]
4.矩阵转置
- 运算规则:将矩阵的第 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; } }
-
java二维数组实现矩阵相乘的问题
2021-02-25 19:52:21展开全部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]);
}
}
}
}
}
}
}
-
Java实现顺时针输出螺旋二维数组的方法示例
2020-08-31 11:50:01主要介绍了利用Java如何实现顺时针输出螺旋二维数组的方法示例,文中给出了详细的示例代码和注释,相信对大家具有一定的参考价值,有需要的朋友们下面来一起看看吧。 -
JAVA 二维数组 矩阵练习
2022-04-02 19:35:32import 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); } }
-
Java二维数组实现简单Map
2019-07-31 05:25:27NULL 博文链接:https://liangjian103.iteye.com/blog/1101210 -
【java】【二维数组】二维数组实现矩阵乘法
2021-03-09 15:48:56若A为NxM阶矩阵 B为MxP阶矩阵,二者相乘之后的矩阵则为NXP阶矩阵 运算过程: 思路 计算并显示出来这个结果 我们则需要 一个计算方法 和 一个显示方法 因此主函数可以写的相当之简单 , 键入想要求解的矩阵的数值 ... -
Java怎么输出二维数组?Java二维数组的输出
2022-04-01 20:11:101. Java二维数组的输出<1> (1) 输出结果右对齐"%5d" (2) 输出结果: 2.Java二维数组的输出<2> (1) 输出结果左对齐"%-5d" (2) 输出结果: 3.我想试试,输出长度超过5会怎么样 (1) 输出... -
【java】使用二维数组输出矩阵
2017-03-23 11:04:19使用二维数组输出矩阵 -
java二维数组添加数据_数组实现矩阵的加法和旋转操作
2020-11-21 10:46:50在编程语言中矩阵可以用一个二维数组进行模拟,如下图所示:矩阵和二维数组大多数高级语言中,都支持二维数组,用二维数组来实现矩阵是非常容易的,编程语言更多的是用来模拟矩阵的加减操作以及移动操作。2. 矩阵的... -
java二维数组输出下三角矩阵
2010-04-25 16:45:06第一次上传自己的资源分享下(需要JDK才可) -
二维数组小练习
2019-02-20 14:52:22二维数组小练习~ -
Java编程中二维数组的初始化和基本操作实例
2020-09-03 05:51:51主要介绍了Java编程中二维数组的初始化和基本操作实例,是Java入门学习中的基础知识,需要的朋友可以参考下 -
java实现从txt文件读取数据并保存至二维数组及判断其是否是矩阵
2020-12-22 08:51:37由于本人也是java初学者,在代码中已有详细的注释(防止自己将来读不懂自己曾写的代码),所以不在文字方面过多赘述。 补充说明:使用的jdk版本为1.8 package hello; import java.io.BufferedReader; import java.io... -
Java二维数组转置(矩阵转置)
2020-10-08 23:16:52public 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:57Java二维数组的输出<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:01java与旋转二维数组 - 领域模型 -
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... -
练习-Java数组之二维数值数组之矩阵转置
2022-01-22 13:06:37任务描述 本关任务:对给定的矩阵做转置操作。 什么是矩阵:矩阵是一个由 m 行(row)n 列(column)元素排列成的矩形阵列,以下是一个 2 行 3 列的矩阵: ...注意:矩阵可以用二维数组表示。 编程要求 -
Java编程实现的二维数组转置功能示例
2020-08-28 03:34:39主要介绍了Java编程实现的二维数组转置功能,结合实例形式分析了Java二维数组的遍历、运算、赋值等实现转置的相关操作技巧,需要的朋友可以参考下 -
java二维数组遍历后转为一维数组_java数组(一)
2020-10-21 03:46:08数组的一些特性java数组要求所有的元素具有相同的数据类型,因此一个数组只能存储一种数据类型的数据,而不能存储多种数据类型的数据。比如你这个数组是int类型的数组,那这个数组就不能存储boolean float... -
Java 二维数组矩阵特定列的和
2021-11-13 00:36:47编写一个方法,求整数矩阵中特定列的所有元素的和,使用下面的方法头: public static double sum...import java.util.Scanner; class Demo1_4{ public static void main(String[] args){ // TODO Auto-generated -
Java二维数组以及多维数组的定义及应用
2021-03-13 16:36:01一、二维数组以及多维数组1、二维数组的定义:?在一维数组中定义每一个元素也是一个数组元素,这样的数组称为”二维数组“?多维数组就是在一维数组上再次定义二维数组或三位数组等。?一维数组定义int [] array={1,2,... -
Java如何实现二维数组查找功能 Java二维数组查找功能实现代码
2021-02-27 19:21:17本篇文章小编给大家分享一下Java二维数组查找功能实现代码,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右...