Bonjour J'essaie de comprendre le code que j'ai écrit et pourquoi imprimer-t-il la sortie ci-dessous m'empête p> Supposons que la matrice donnée n'est pas symétrique ici. p> Comment puis-je modifier ce code pour me donner en disant si la matrice est symétrique ou non seulement une fois. P> p>
4 Réponses :
Tout d'abord, vos boucles imprimeront "matrice n'est pas symétrique \ n" chaque fois qu'ils trouvent et Vous voulez probablement votre méthode pour avoir une valeur de retour booléenne au lieu d'imprimer cette sortie. De cette façon, les boucles ne feront que itérayer jusqu'à ce que vous découvriez que la matrice n'est pas symétrique. P> Pour faire de même sans valeur de retour: P> i code> et j code> pour lequel matrice [i] [j] [je] ]! = matrice [j] [i] code>, qui peut arriver plus d'une fois. system.out.print ("matrice est symétrique \ n"); code> est toujours appelé, de sorte que cela explique la dernière ligne de sortie. P> 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");
}
J'ai une méthode booléenne, mais j'apprends Java et j'essaie de faire cette méthode spécifiquement avec le vide.
Ajoutez ensuite un chèque à l'aide d'une variable booléenne
@Mani Dans ce cas, vous devez sortir des boucles une fois que vous trouverez la matrice n'est pas symétrique et imprimez uniquement la dernière ligne de sortie si vous n'avez pas rompu des boucles. Vous aurez besoin d'une variable booléenne pour cela.
juste une déclaration de retour simple fera. Il n'exécutera plus si la condition est fausse.
if(isSymmetric(matrix))
System.out.println("Symmetric");
else
System.out.println("Not Symmetric");
Oui, si la condition n'est pas convaincue, elle sort de la boucle extérieure. Peut-être que vous souhaitez retourner un booléen code> comme suggéré par Eran.
J'ai une méthode booléenne et cela fonctionne comme prévu, mais j'étais juste curieux de voir ce qui se passe avec le vide. Une autre question, lorsque je parsois, il imprime toujours la dernière ligne de matrice symétrique. Y a-t-il un moyen dans void code> pour renvoyer uniquement la sortie spécifique? Dans ce cas n'étant pas symétrique
Parce que c'est en dehors des boucles et toujours appelé. ajouter une déclaration de retour ferait.
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");
}
1) Comme l'a souligné Eran, I et J ne sont pas égaux plus d'une fois et, par conséquent, il continuera d'imprimer aussi longtemps que la boucle itière. Je suggère d'utiliser une déclaration de pause pour sortir de la boucle la toute première fois qu'il trouve que je! = J. p>
2) La dernière instruction d'impression sera appelée indépendamment de la manière dont la boucle se comporte et si la matrice est symétrique ou non. Je suggère d'imprimer que la matrice est symétrique en créant une autre instruction en dehors de la boucle pour vérifier la symétrie. p>
cassez-le en utilisant
pause externe code>@Umakanth pendant que votre réponse peut être correcte, veuillez répondre à la question dans la section de réponse plutôt que sur les commentaires.
Vous pouvez définir une valeur d'indicateur, puis vérifier la valeur pour imprimer le résultat souhaité.
@Coderneji merci. C'est exactement ce que je cherchais.