CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : [DEBUTANT] Problème dans mon code Java

DébutPage précedente
1
Page suivantePage suivante
Pseudo supprimé
Niveau 3
24 avril 2018 à 19:01:14

Donc salut à tous, j'ai voulu créer un petit bout de code où on demande à l'utilisateur si il veut changer de touche (dans ce cas pour avancer, ce n'est qu'une "simulation"). Une fois qu'on rentre dans la partie "else" du code(en mettant une autre valeur que 0 dans ce cas ci), le logiciel ne me laisse pas écrire la nouvelle touche que je souhaite mettre. L'erreur peut être très basique mais je ne la vois pas du tout. Merci à vous.
Les lignes de code:

package tryingsmth;

import java.util.Scanner;

public class test1 {

public static void main(String[] args) {
// TODO Auto-generated method stub
String key = ("z");
System.out.println("The default key to go forward is Z");
System.out.println("Do you want to change it?");
Scanner sc = new Scanner(System.in);
int choose = sc.nextInt();
if (choose == 0) { System.out.println("You wont change it");

}else {
System.out.println("You want to change it");
System.out.println("Choose your key");
String newKey = sc.nextLine();
System.out.println("Your new bind is " + newKey);

}

}

}

[Kakuzu]2 [Kakuzu]2
MP
Niveau 24
24 avril 2018 à 19:44:33

Le programme passe bien dans ton else mais ne s'arrête pas pour lire le prochain input de l'utilisateur. Le problème vient de cette ligne :

String newKey = sc.nextLine();

Ici, la bonne solution est d'utiliser la fonction next().

String newKey = sc.next();

Pour t'expliquer, il faut d'abord comprendre le fonctionnement de ton programme. Dans un premier temps, tu vas donner un input de type int, disons 5. Ce qui va être "compris" et "noté" par la machine ce sera :

5 \n

En effet, en entrant ton input de type int, tu vas automatiquement générer un retour à la ligne (le \n). En soit, il n'y a pas de problème ici puisque ton nextInt() va bien récupérer l'entier, ici le 5.

On passe donc dans ton else, et le problème apparaît avec ta fonction nextLine(), étant donné que ton scanner n'a lu que l'entier, il reste le \n à lire et va donc le faire. Vu qu'il a récupéré quelque chose, il passe directement à l'instruction suivante et ton programme fini sans avoir eu la possibilité de faire autre chose.

Avec la fonction next(), tu vas prendre le prochain token et dans ton cas tu ne vas pas consommer le retour à la ligne (\n).

Note : Pense à utiliser les balises de code pour rendre ton poste plus lisible, autant pour toi que pour les autres.

Message édité le 24 avril 2018 à 19:45:36 par [Kakuzu]2
Pseudo supprimé
Niveau 3
24 avril 2018 à 19:54:47

Merci, ça fonctionne ! :) J'utiliserai les balises désormais :desole:

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment