首页 > 解决方案 > if 语句在退出 while 语句后不起作用

问题描述

因此,在退出我的循环后,我的最后一条if语句由于某种原因无法解决,它可能只是一个愚蠢的错误,但我似乎找不到它。

这是有问题的代码。我删除了其中只是文本的一部分,以使代码更短。

public class Prototype_SAAQ {
    public static void main(String[] args) {
        char sex;
        int nbHommes;
        int nbFemmes;
        int ageFemmes;
        int ageHommes;
        int ageMoyenHomme;
        int ageMoyenFemme;
        char options;
        int vitesseMax;
        int vitesseRadar;
        int vitesseTotal;
        int totalPoints;
        int nbInfractions;

        System.out.println("Ce programme est un PROTOTYPE pour la gestion des infractions du code de la route");
        System.out.println("OPTION");
        System.out.println("s/S - Exces de vitesse dans une zone de 60km/h ou moins");
        System.out.println("z/Z - Depassements successifs en zigzag ");
        System.out.println("t/T - Conduite en faisant usage d'un appareil muni d'une fonction telephonique");
        System.out.println("c/C - Conduite pour un pari, un enjeu ou une course");
        System.out.println("d/D - Distance imprudente entre les vehicules");
        System.out.println("q/Q - Quitter le programme");
        System.out.println("Entrez votre choix: ");
        options = Clavier.lireChar();

        totalPoints = 0;
        nbHommes = 0;
        nbFemmes = 0;
        ageMoyenHomme = 0;
        ageMoyenFemme = 0;
        nbInfractions = 0;
        while (options != ('q') || options != ('Q')) {
            if (options == ('s') || options == ('S')) {

                System.out.println("OPTION");
                System.out.println("s/S - Exces de vitesse dans une zone de 60km/h ou moins");
                System.out.println("z/Z - Depassements successifs en zigzag");
                System.out.println("t/T - Conduite en faisant usage d'un appareil muni d'une fonction telephonique");
                System.out.println("c/C - Conduite pour un pari, un enjeu ou une course");
                System.out.println("d/D - Distance imprudente entre les vehicules");
                System.out.println("q/Q - Quitter le programme");
                System.out.println("Entrez votre choix: ");
                options = Clavier.lireChar();
            }
            if (options == ('z') || options == ('Z')) {
                System.out.println("Depassements successifs en zigzag");
                System.out.println("OPTION");
                System.out.println("s/S - Exces de vitesse dans une zone de 60km/h ou moins");
                System.out.println("z/Z - Depassements successifs en zigzag");
                System.out.println("t/T - Conduite en faisant usage d'un appareil muni d'une fonction telephonique");
                System.out.println("c/C - Conduite pour un pari, un enjeu ou une course");
                System.out.println("d/D - Distance imprudente entre les vehicules");
                System.out.println("q/Q - Quitter le programme");
                System.out.println("Entrez votre choix: ");
                options = Clavier.lireChar();
            }
            if (options == ('t') || options == ('T')) {
                System.out.println("Conduite en faisant usage d'un appareil muni d'une fonction téléphonique");
                System.out.println("OPTION");
                System.out.println("s/S - Exces de vitesse dans une zone de 60km/h ou moins");
                System.out.println("z/Z - Depassements successifs en zigzag");
                System.out.println("t/T - Conduite en faisant usage d'un appareil muni d'une fonction telephonique");
                System.out.println("c/C - Conduite pour un pari, un enjeu ou une course");
                System.out.println("d/D - Distance imprudente entre les vehicules");
                System.out.println("q/Q - Quitter le programme");
                System.out.println("Entrez votre choix: ");
                options = Clavier.lireChar();
            }
            if (options == ('c') || options == ('C')) {
                System.out.println("Conduite pour un pari, un enjeu ou une course");
                System.out.println("OPTION");
                System.out.println("s/S - Exces de vitesse dans une zone de 60km/h ou moins");
                System.out.println("z/Z - Depassements successifs en zigzag");
                System.out.println("t/T - Conduite en faisant usage d'un appareil muni d'une fonction telephonique");
                System.out.println("c/C - Conduite pour un pari, un enjeu ou une course");
                System.out.println("d/D - Distance imprudente entre les vehicules");
                System.out.println("q/Q - Quitter le programme");
                System.out.println("Entrez votre choix: ");
                options = Clavier.lireChar();
            }
            if (options == ('d') || options == ('D')) {
                System.out.println("Distance imprudente entre les vehicules");
                System.out.println("OPTION");
                System.out.println("s/S - Exces de vitesse dans une zone de 60km/h ou moins");
                System.out.println("z/Z - Depassements successifs en zigzag");
                System.out.println("t/T - Conduite en faisant usage d'un appareil muni d'une fonction telephonique");
                System.out.println("c/C - Conduite pour un pari, un enjeu ou une course");
                System.out.println("d/D - Distance imprudente entre les vehicules");
                System.out.println("q/Q - Quitter le programme");
                System.out.println("Entrez votre choix: ");
                options = Clavier.lireChar();
            }
        }
        if (options == ('q') || options == ('Q')) {
            System.out.println("Nombres d'infractions: " + nbInfractions);
        }
    }
}

标签: javaloopsif-statementwhile-loop

解决方案


您编写了一个无限循环:

while (options != ('q') || options != ('Q')) { ... }

字符不能同时是“q”和“Q”。我假设你想写:

while (! (options=='q' || options=='Q') ) {...}

推荐阅读