Voici mon code:
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String question;
question = in.next();
if (question.equalsIgnoreCase("howdoyoulikeschool?") )
/* it seems strings do not allow for spaces */
System.out.println("CLOSED!!");
else
System.out.println("Que?");
Quand j'essaie d'écrire "comment aimes-tu l'école?" la réponse est toujours "Que?" mais cela fonctionne bien comme "comment faire l'école?"
Devrais-je définir l'entrée comme autre chose que String?
in.next()
retournera des chaînes délimitées par des espaces. Utilisez in.nextLine()
si vous voulez lire toute la ligne. Après avoir lu la chaîne, utilisez question = question.replaceAll("\\s","")
pour supprimer les espaces.
Voici un exemple d'implémentation de la prise d'entrée en Java. J'ai ajouté une tolérance de panne sur le champ salaire uniquement pour montrer comment procéder. Si vous remarquez, vous devez également fermer le flux d'entrée .. Enjoy :-)
/* AUTHOR: MIKEQ
* DATE: 04/29/2016
* DESCRIPTION: Take input with Java using Scanner Class, Wow, stunningly fun. :-)
* Added example of error check on salary input.
* TESTED: Eclipse Java EE IDE for Web Developers. Version: Mars.2 Release (4.5.2)
*/
import Java.util.Scanner;
public class userInputVersion1 {
public static void main(String[] args) {
System.out.println("** Taking in User input **");
Scanner input = new Scanner(System.in);
System.out.println("Please enter your name : ");
String s = input.nextLine(); // getting a String value (full line)
//String s = input.next(); // getting a String value (issues with spaces in line)
System.out.println("Please enter your age : ");
int i = input.nextInt(); // getting an integer
// version with Fault Tolerance:
System.out.println("Please enter your salary : ");
while (!input.hasNextDouble())
{
System.out.println("Invalid input\n Type the double-type number:");
input.next();
}
double d = input.nextDouble(); // need to check the data type?
System.out.printf("\nName %s" +
"\nAge: %d" +
"\nSalary: %f\n", s, i, d);
// close the scanner
System.out.println("Closing Scanner...");
input.close();
System.out.println("Scanner Closed.");
}
}
Au lieu de
Scanner in = new Scanner(System.in);
String question;
question = in.next();
Tapez
Scanner in = new Scanner(System.in);
String question;
question = in.nextLine();
Cela devrait pouvoir prendre des espaces en entrée.
Comme il y a longtemps et que les gens continuent à suggérer d'utiliser Scanner#nextLine()
, il y a une autre chance pour que Scanner
prenne des espaces inclus dans l'entrée.
Un scanneur coupe son entrée en jetons à l'aide d'un motif de délimiteur, qui correspond par défaut aux espaces.
Vous pouvez utiliser Scanner#useDelimiter()
pour modifier le délimiteur de Scanner
en un autre modèle, tel que line feed
ou quelque chose d'autre.
Scanner in = new Scanner(System.in);
in.useDelimiter("\n"); // use LF as the delimiter
String question;
System.out.println("Please input question:");
question = in.next();
// TODO do something with your input such as removing spaces...
if (question.equalsIgnoreCase("howdoyoulikeschool?") )
/* it seems strings do not allow for spaces */
System.out.println("CLOSED!!");
else
System.out.println("Que?");