Je suis essentiel d'essayer de créer un jeu de devinettes, un peu comme un bourreau, mais vous devez deviner un titre de film. Le titre du film est codé avec chaque caractère représenté par le caractère de soulignement ('_'). Lorsque l'utilisateur entre une lettre correcte, le trait de soulignement à la position de la lettre correspondante change à cette lettre. L'utilisateur introduit ses suppositions sous la forme de caractères uniques en utilisant le scanner. Mon problème est que certains titres de films contiennent un espace (''). Mais je suis incapable d'utiliser le scanner pour retourner un espace ... Je suppose qu'un scanner utilise l'espace comme délimiteur par défaut, donc il ne retourne pas un espace en tant que caractère car il utilise l'espace pour casser l'entrée en jetons ? Par «retourner un espace», je veux dire considérer un espace comme une entrée, et non comme un délimiteur. Est-ce que n'importe qui peut me donner une solution quant à la façon dont je pourrais détecter un espace de l'entrée de l'utilisateur? Ce code doit lire le MovieTitle, puis si le titre du film contient un espace à l'index i et que l'entrée utilisateur est un espace, codedMovieTitle doit alors se mettre à jour avec un espace à la position i, au lieu d'un trait de soulignement. Cependant cela ne fonctionne pas. Quand j'entrer dans un espace en utilisant rien du scanner arrive ...imprimer un espace avec le scanner
for (int i = 0; i < movieTitle.length(); i++) {
if(Character.isSpaceChar(movieTitle.charAt(i)) &&
Character.isSpace(userInput)){
encodedMovieTitle = encodedMovieTitle.substring(0, i)
+ userInput
+ encodedMovieTitle.substring(i + 1);
}
}
Voici le code pour mon scanner:
Scanner scanner = new Scanner(System.in);
char userInput;
while(!gameIsWon && (numberOfGuessesLeft != 0)) {
while (scanner.hasNextInt()) {
System.out.println("You must enter a single character, try again.");
scanner.next();
}
userInput = scanner.nextLine().charAt(0);
Je me bats aussi avec permettre mon entrée du scanner pour être non sensible à la casse. Certains films ont des majuscules. Si le titre est "Tempête de neige" et que l'utilisateur saisit le caractère 's', le résultat encodedMovieTitle sera "_ _ _ _ s _ _ _ _" et non "S _ _ _ s _ _ _ _"
Si quelqu'un a une solution qui serait géniale! La plupart des solutions trouvées impliquaient l'utilisation de chaînes mais j'utilisais des caractères comme userInput etc, donc je me demandais s'il y avait une solution impliquant des caractères.
codepour la vérification est UserInput (char) est en movieTitle (string):
for (int i = 0; i < movieTitle.length(); i++) {
if (updatedCodedMovieTitle.charAt(i) != userInput && movieTitle.charAt(i) == userInput) {
updatedCodedMovieTitle = updatedCodedMovieTitle.substring(0, i)
+ userInput
+ updatedCodedMovieTitle.substring(i + 1);
wordHasBeenUpdated = true;
}
if(Character.isSpaceChar(movieTitle.charAt(i)) && Character.isSpaceChar(userInput)){
updatedCodedMovieTitle = updatedCodedMovieTitle.substring(0, i)
+ " "
+ updatedCodedMovieTitle.substring(i + 1);
}
}
pouvez-vous s'il vous plaît coller le code du scanner aussi? –
pouvez-vous nous montrer comment créez-vous le scanner? –
J'ai mis à jour mon commentaire pour ajouter le code du scanner – CheckCho