【发布时间】:2017-04-16 23:56:53
【问题描述】:
这个程序应该: “向用户询问一个数字 n。创建一个 nxn 整数矩阵。使用种子 5 用 0 到 9 之间的随机数填充矩阵(请记住,当我们为随机数生成器播种时,我们会得到可预测的“随机”数)。
对于完整的信用,计算从矩阵左上角开始的对角线的总和(索引 [0][0])。将该总和显示在屏幕上。”
教授回答: “对于 100 x 100 矩阵,主对角线的总和应为 503,另一对角线的总和应为 444。”
我的程序答案:主对角线为 700。所以我猜我的 MakeandFillMatrix 方法有问题。
import java.util.*;
/*
*/
public class TesterProject
{
public static void main(String [] args)
{
int n = getMatrixSize();
int[][] m = makeAndFillMatrix(n);
printMatrix(m);
int sumD1 = calculateMainDiagonal(m);
System.out.println("The sum of the main diagonal is " + sumD1);
}
public static int getMatrixSize()
{
Scanner S = new Scanner(System.in);
System.out.println("give me a int to create the matrix");
while(!S.hasNextInt())
{
System.out.println("I need an integer!");
S.next();
}
int n = S.nextInt();
return n;
}
public static int [][] makeAndFillMatrix(int n)
{
Random generator = new Random(5);
int [][] r = new int[n][n];
int rand = generator.nextInt(10);
for(int i = 0; i < n; i++)
{
for(int j = 0; j < n; j++)
{
r[i][j] = rand;
//rand++;
}
}
return r;
/*
for(int i = 0; i < r.length; i++)
{
for(int j = 0; j < r[i].length; j++)
{
r[i][j]= rand;
}
}
return r;
*/
}
public static void printMatrix(int [][] matrix)
{
for(int r = 0; r < matrix.length; r++)
{
for(int c = 0; c < matrix[r].length; c++)
{
System.out.print(matrix[r][c] + " ");
}
System.out.println();
}
}
public static int calculateMainDiagonal(int [][] m)
{
int total = 0;
for (int r = 0; r < m.length; r++)
{
total += m[r][r];
}
return total;
}
}
【问题讨论】:
-
使用调试器逐步完成您的程序,这是您需要尽早学习的技能
-
程序运行正常,只是没有给出要求的输出。
-
所以这意味着它不起作用。我原来的评论仍然有效。绝对不需要猜测。只需了解如何使用与任何现代 IDE 集成的调试器
-
您对矩阵的每个元素使用相同的“随机”数字,这并不是真正要求的。因为我是巫师,所以我可以推断出这个数字是 7。
-
如果你的程序控制了一台 X 光机并在操作员同时按下 SHIFT+SPACE 的情况下产生了致命的辐射量,你会说你的程序正常工作,但它只是没有给出所需的输出?