6
votes

Méthode vide Impression Deux fois

Bonjour J'essaie de comprendre le code que j'ai écrit et pourquoi imprimer-t-il la sortie ci-dessous xxx

m'empête xxx

Supposons que la matrice donnée n'est pas symétrique ici. xxx

Comment puis-je modifier ce code pour me donner en disant si la matrice est symétrique ou non seulement une fois.


4 commentaires

cassez-le en utilisant pause externe


@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.


4 Réponses :


4
votes

Tout d'abord, vos boucles imprimeront "matrice n'est pas symétrique \ n" chaque fois qu'ils trouvent i code> et j code> pour lequel matrice [i] [j] [je] ]! = matrice [j] [i] code>, qui peut arriver plus d'une fois.

et system.out.print ("matrice est symétrique \ n"); code> est toujours appelé, de sorte que cela explique la dernière ligne de sortie. P>

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> xxx pré>

Pour faire de même sans valeur de retour: 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");
}


3 commentaires

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.



6
votes

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");


3 commentaires

Oui, si la condition n'est pas convaincue, elle sort de la boucle extérieure. Peut-être que vous souhaitez retourner un booléen 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 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.



-1
votes
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");
}

0 commentaires

0
votes

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.

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.


0 commentaires