CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • 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 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[DEBUTANT] Problème dans mon code Java

Pseudo supprimé
Pseudo supprimé 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
Niveau 34
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é
Pseudo supprimé 24 avril 2018 à 19:54:47

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

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment