java - java中的方阵和二次对角线
问题描述
我有这个任务:
给定一个方阵 m[3x3],创建一个 java 代码来计算其 SECONDARY Diagonal 的值。请参见下面的示例。
给定矩阵 m[3x3] 的示例如下所示:
(0,0) (0,1) (0,2) | 10 12 11
(1,0) (1,1) (1,2) | 9 8 31
(2,0) (2,1) (2,2) | 2 16 24
Secondary Diagonal (generic m[3x3]) = m[0,2] + m[1,1] + m[2,0]
Secondary Diagonal (as in the example above) = 11 + 8 + 2 = 21
注意 1:您的 java 代码必须是 GENERIC 才能计算任何方阵 [2x2]、[3x3]、[4x4] 等的次对角线。(在代码中使用常量来设置矩阵的 numberOfRows 和 numberOfColumns 的值.
注 2:您的矩阵 m 可能是硬编码的(无需用户交互)
注意 3:如果 numberOfRows 和 numberOfColumns 不同,您的程序必须显示以下消息:“This is not a square matrix.”</p>
到目前为止,我有:
public class matrix {
public static void main(String[] args) {
int [] [] matrix = {
{ 10, 12, 11},
{9, 8, 31},
{2, 16, 24}
};
int secondaryDiagonal = 0;
int size = matrix.length -1;
for (int i = 0; i < matrix.length; i++) {
secondaryDiagonal += matrix[i][size-i];
}
System.out.println("Secondary diagonal is " + secondaryDiagonal);
}
}
它有效,但我无法找到一种方法来实现最后的所有注释......请帮助?
解决方案
您已经达到要求 1 和 2。
对于 3,查找行数和列数并显示一条消息,不执行任何操作。
int numberOfRows = matrix.length;
int numberOfColumns = matrix[0].length; //Note must have atleast one row
if (numberOfRows != numberOfColumns) {
System.out.println("This is not a square matrix");
} else {
//proceed to find secondaryDiagonal
}
如果传递了一个空矩阵(如int [][] matrix = {};
),您需要决定要做什么。在这种情况下,numberOfRows
将为 0。因此,需要增强第二个条件来处理此问题。
numberOfColumns = numberOfRows > 0 ? matrix[0].length : 0
上面不会报告任何消息,而是会落到else块并导致Secondary diagonal is 0
.
它还假设所有行都有相同数量的列,我猜这对你来说可能没问题,不需要如此广泛的测试(来自你的笔记)
推荐阅读
- excel - VBA脚本在列中搜索字符串并删除包含该字符串的整行?
- java - Spring Boot jpa 表层次结构
- php - 使用准备好的语句进行动态参数绑定
- sybase - 如何使用查询获取sybase中的过程缓存命中率?
- python - Pandas - 比较两个 Dataframe 并发现差异
- java - 如何解决此错误“类型不匹配:无法从列表转换
到迭代器 " - java - 如何在 JavaFX 中从用户选择的数据库表中创建动态 TableView
- r - data.table 中的合并问题
- react-native - 无法离开组件
- android - 当资源存在于不同模块中时,kotlinx.android.synthetic 无法识别资源