英文:
Diagonals with Matrices
问题
目前正在尝试打印矩阵,输出结果为:
0 0 0 0 4
0 0 0 3 0
0 0 2 0 0
0 1 0 0 0
0 0 0 0 0
这是我目前的代码:
for(int row=0; row < matrix.length; row++)
for(int col = 0; col < matrix[row].length; col++)
if(row+col == matrix[row].length)
显然还不完整。我甚至不确定代码背后的逻辑是否正确。
英文:
Currently trying to print a matrix with an output of:
0 0 0 0 4
0 0 0 3 0
0 0 2 0 0
0 1 0 0 0
0 0 0 0 0
This is my code currently:
for(int row=0; row < matrix.length; row++)
for(int col = 0; col < matrix[row].length; col++)
if(row+col == matrix[row].length)
Obviously not complete. I'm not even sure my logic behind the code is correct.
答案1
得分: 0
假设始终是方阵。这将构建您的矩阵。
for (int row = 0; row < matrix.length; row++) {
for (int col = 0; col < matrix.length; col++) {
if (matrix.length - row - 1 == col) {
matrix[row][col] = col;
}
}
}
要在同一步骤中打印,只需删除打印注释。
英文:
Assume always square matrix.This should construct your matrix.
<br>
for(int row=0; row < matrix.length; row++)
{
//System.out.println("");
for(int col = 0; col < matrix.length; col++)
{
//eg [0][4] = 4 on valid condition [5-0-1] == 4
if(matrix.length-row-1 == col)
{
matrix[row][col] = col;
}
//System.out.print(matrix[row][col]);
}
}
<br> For printing in same step just remove print-comments
答案2
得分: 0
这是应该能够运行的代码(假设矩阵始终为方阵):
for(int row=0; row < matrix.length; row++){
for(int col = 0; col < matrix[row].length; col++){
if(row + col == matrix.length - 1){
matrix[row][col] = col;
System.out.print(col + " "); // 打印数值
} else {
matrix[row][col] = 0; // 设置数值
System.out.print("0 ");
}
}
System.out.println("");
}
在条件中我们减去1,因为length-1给出了最后一个索引。(请注意索引从0开始,到length-1为止)
英文:
This is the code that should work (assuming the matrix is always square):
for(int row=0; row < matrix.length; row++){
for(int col = 0; col < matrix[row].length; col++){
if(row + col == matrix.length - 1){
matrix[row][col] = col;
System.out.print(col+ " "); // Print value
} else {
matrix[row][col] = 0; // Set value
System.out.print("0 ");
}
}
System.out.println("");
}
We subtracted by 1 in the condition since the length-1 gives us the last index. (reminder that indexes start from 0 and to go length -1)
答案3
得分: 0
请注意,int
数组中的默认值为 0
,因为 int
变量的默认值是 0
。因此,您只需更改所需对角线上的值,将其余值保持不变。
按以下方式操作:
public class Main {
public static void main(String[] args) {
final int SIZE = 5;
int[][] matrix = new int[SIZE][SIZE];
// 初始化矩阵
for (int row = 0; row < matrix.length; row++) {
for (int col = 0; col < matrix[row].length; col++) {
if (row + col == matrix.length - 1) {
matrix[row][col] = col;
}
}
}
// 打印矩阵
for (int row[] : matrix) {
for (int col : row) {
System.out.print(col + " ");
}
System.out.println();
}
}
}
输出:
0 0 0 0 4
0 0 0 3 0
0 0 2 0 0
0 1 0 0 0
0 0 0 0 0
我使用了增强型 for 循环来打印矩阵。如果您愿意,您也可以按照以下方式编写:
// 打印矩阵
for (int row = 0; row < matrix.length; row++) {
for (int col = 0; col < matrix[row].length; col++) {
System.out.print(matrix[row][col] + " ");
}
System.out.println();
}
英文:
Note that the default values in an int
arrays are 0
because the default value of an int
variable is 0
. Therefore, you just need to change the values in the required diagonal and leave the rest of the values as they are.
Do it as follows:
public class Main {
public static void main(String[] args) {
final int SIZE = 5;
int[][] matrix = new int[SIZE][SIZE];
// Initialise the matrix
for (int row = 0; row < matrix.length; row++) {
for (int col = 0; col < matrix[row].length; col++) {
if (row + col == matrix.length - 1) {
matrix[row][col] = col;
}
}
}
// Print the matrix
for (int row[] : matrix) {
for (int col : row) {
System.out.print(col + " ");
}
System.out.println();
}
}
}
Output:
0 0 0 0 4
0 0 0 3 0
0 0 2 0 0
0 1 0 0 0
0 0 0 0 0
I have used the enhanced for loop to print the matrix. You can write it as follows if you wish:
// Print the matrix
for (int row = 0; row < matrix.length; row++) {
for (int col = 0; col < matrix[row].length; col++) {
System.out.print(matrix[row][col] + " ");
}
System.out.println();
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论