您好我正在尝试理解我编写的代码,为什么要打印下面的输出
public void isSymmetricNow(int[][] matrix){
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix.length; j++) {
if (matrix[i][j] != matrix[j][i]) {
System.out.print("matrix is not symmetric \n");
}
}
}
System.out.print("matrix is symmetric \n");
}
打印我
matrix is not symmetric
matrix is not symmetric
matrix is symmetric
假设给定矩阵在这里不对称。
int matrix3[][] = {{1,4,7},{-4,6,6},{7,6,9}};
如何修改此代码,让我回想一下矩阵是对称的还是不对称的。
答案 0 :(得分:6)
只需一份简单的退货声明即可。如果条件为假,它将不会再次执行。
public void isSymmetricNow(int[][] matrix){
//Random random = new Random();
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix.length; j++) {
//matrix[i][j] = random.nextInt(20);
if (matrix[i][j] != matrix[j][i]) {
System.out.print("matrix is not symmetric \n");
return;
}
}
}
System.out.print("matrix is symmetric \n");
}
或
你可以返回一个布尔表示它是对称的。
public boolean isSymmetricNow(int[][] matrix){
//Random random = new Random();
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix.length; j++) {
//matrix[i][j] = random.nextInt(20);
if (matrix[i][j] != matrix[j][i]) {
return false;
}
}
}
return true;
}
然后使用您的函数调用它。
if(isSymmetric(matrix))
System.out.println("Symmetric");
else
System.out.println("Not Symmetric");
答案 1 :(得分:4)
首先,只要找到i
和j
matrix[i][j] != matrix[j][i]
,{> 1}},您的循环就会打印“矩阵不对称\ n”,这可能会发生多次。
和System.out.print("matrix is symmetric \n");
,以便解释最后一行输出。
您可能希望您的方法具有布尔返回值,而不是打印此输出。这样循环只会迭代,直到你发现矩阵不对称为止。
public boolean isSymmetricNow(int[][] matrix){
//Random random = new Random();
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix.length; j++) {
//matrix[i][j] = random.nextInt(20);
if (matrix[i][j] != matrix[j][i]) {
return false;
}
}
}
return true;
}
在没有返回值的情况下执行相同的操作:
public void isSymmetricNow(int[][] matrix){
//Random random = new Random();
boolean isSymmetric = true;
for (int i = 0; i < matrix.length && isSymmetric; i++) {
for (int j = 0; j < matrix.length && isSymmetric; j++) {
//matrix[i][j] = random.nextInt(20);
if (matrix[i][j] != matrix[j][i]) {
System.out.print("matrix is not symmetric \n");
isSymmetric = false;
}
}
}
if (isSymmetric)
System.out.print("matrix is symmetric \n");
}
答案 2 :(得分:0)
1)正如Eran指出的那样,i和j不等于一次,因此只要循环迭代就会保持打印。我建议在第一次发现i!= j时使用break语句退出循环。
2)无论循环如何表现以及矩阵是否对称,都将调用最后一个print语句。我建议打印矩阵是对称的,通过在循环外创建另一个if语句来检查对称性。
答案 3 :(得分:-1)
public void isSymmetricNow(int[][] matrix){
//Random random = new Random();
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix.length; j++) {
//matrix[i][j] = random.nextInt(20);
if (matrix[i][j] != matrix[j][i]) {
System.out.print("matrix is not symmetric \n");
return; //When it does not symetric, return.
}
}
}
System.out.print("matrix is symmetric \n");
}