web-dev-qa-db-fra.com

Comment vérifiez-vous si une chaîne n'est pas égale à un objet ou à une autre valeur de chaîne en Java?

J'ai essayé de créer une horloge que l'utilisateur peut régler. Je voulais qu'on pose des questions à l'utilisateur et il répondait par des mots comme oui ou non. Je l'ai fait pour des choses qui ne changent pas en utilisant ce code, par exemple si l'utilisateur veut ou non que les secondes soient affichées, mais cela ne fonctionne pas aussi bien quand je veux que la chaîne change, disons de AM à = PM lorsque les heures dépassent 12. Voici ce que j'utilise:

    System.out.println("AM or PM?"); 
    Scanner TimeOfDayQ = new Scanner(System.in);
    TimeOfDayStringQ = TimeOfDayQ.next();

    if(!TimeOfDayStringQ.equals("AM") || !TimeOfDayStringQ.equals("PM")) {
        System.out.println("Sorry, incorrect input.");
        System.exit(1);
    }

    ...

    if(Hours == 13){
        if (TimeOfDayStringQ.equals("AM")) {
            TimeOfDayStringQ.equals("PM");
        } else {
            TimeOfDayStringQ.equals("AM");
        }
                Hours = 1;
        }
     }

Chaque fois que j'entre quelque chose quand cela m'invite, que je mette AM, PM ou autre, cela me donne l'erreur que j'ai écrite puis se termine. Lorsque je supprime la section de code qui termine le programme avec l'erreur, cela ne changera pas la chaîne de AM en PM lorsque les heures sont égales à 13. Merci de votre aide, c'est très apprécié.

20
Pillager225

Changez votre code pour:

System.out.println("AM or PM?"); 
Scanner TimeOfDayQ = new Scanner(System.in);
TimeOfDayStringQ = TimeOfDayQ.next();

if(!TimeOfDayStringQ.equals("AM") && !TimeOfDayStringQ.equals("PM")) { // <--
    System.out.println("Sorry, incorrect input.");
    System.exit(1);
}

...

if(Hours == 13){
    if (TimeOfDayStringQ.equals("AM")) {
        TimeOfDayStringQ = "PM"; // <--
    } else {
        TimeOfDayStringQ = "AM"; // <--
    }
            Hours = 1;
    }
 }
26
Eng.Fouad

vous voudrez utiliser && pour voir qu'il n'est pas égal à "AM" ET pas égal à "PM"

if(!TimeOfDayStringQ.equals("AM") && !TimeOfDayStringQ.equals("PM")) {
    System.out.println("Sorry, incorrect input.");
    System.exit(1);
}

pour être clair, vous pouvez également faire

if(!(TimeOfDayStringQ.equals("AM") || TimeOfDayStringQ.equals("PM"))){
    System.out.println("Sorry, incorrect input.");
    System.exit(1);
}

pour avoir la phrase not (one or the other) dans le code (rappelez-vous les crochets (silencieux))

13
ratchet freak

Changez votre || vers &&, il ne sortira que si la réponse est NI "AM" ni "PM".

1
goto10