Je viens de lire sept threads liés aux problèmes de Java Scanner, mais aucun ne contenait la réponse à mon problème. J'essaie d'obtenir l'entrée de l'utilisateur à partir de la console. Je crée un objet Scanner (entrée) puis essaye de stocker la commande de l'utilisateur dans une chaîne appelée "commande". Ensuite, je transmets "command" à la fonction runGame d'origine. Il semble que Scanner/commande lisent le texte en écriture. (Si j'entre 'd', puis j'imprime le contenu de la commande, il imprime 'd'.)Problèmes Java - Entrée du scanner et instructions If (X == Input)
Mais quand je retourne la chaîne et la mémorise dans nextMove, elle se casse. Par exemple, je vais entrer 'd' mais ensuite (nextMove == 'd') si l'instruction n'est pas appelée. En fait, peu importe ce que je saisis, seule l'instruction else est entrée.
Qu'est-ce que je fais mal? Comment puis-je corriger
Voici le code de fonction d'origine:
public void runGame() {
drawWindow();
while(true) {
String nextMove = takeInput();
if(nextMove == "d")
System.out.print("WORRRRDDD d");
else if(nextMove == "w")
System.out.print("WORRRRDDD w ");
else {
drawWindow();
System.out.print("YOU GOT ELSED");
continue;
}
}
}
Et voici le code de fonction takeInput/Scanner:
public String takeInput() {
String command;
input = new Scanner(System.in); // "input" is the Scanner object used for all input.
try{
System.out.print("Enter command (d, w, stop, restart, exit): ");
command = input.next();
} catch(Exception e) {
System.out.println("You entered an invalid command.");
return null;
}
System.out.println("\n RETURNING COMMAND" + command + " \n");
return command;
}
Pendant que vous aidez (je vais pour chercher, mais si je ne le trouve pas), quelle est la meilleure façon de reconnaître une entrée vide dans un objet scanner?
Et devrait-il y avoir d'autres exceptions/captures dont j'ai besoin de s'inquiéter pour l'entrée de l'utilisateur dans une console?
Je me trompe peut-être, mais je ne pense pas que les instructions chaîne java sont faites avec == –
Attendez une minute, c'est parce que j'ai besoin d'utiliser .equals() n'est-ce pas? –
yup je crois que oui –