Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Java] Probleme avec input

Sujet résolu
    25 novembre 2006 à 0:31:48

    Bonjour, je suis novice en Java que j'ai découvert avec le tuto de mythrys et un script ne fonctionne pas sur mon PC. J'aimerais savoir si il y a une erreur ou si ça vient de moi ? ^^

    Le code est le suivant

    import java.util.*;

    public class Clavier {

           
            public static void main(String[] args) {
                    Scanner in = new Scanner(System.in); //On crée l'objet in de type Scanner qui va nous permettre d'utiliser plus facilement System.in
                    System.out.println("entrez un String"); //Information pour l'utilisateur
                    String s = in.nextLine(); //La méthode nextLine() lit la chaine de caractère entrée au clavier
                    System.out.println("entrez un int");
                    int a = in.nextInt(); // la méthode nextInt() lit l'int entré
                    System.out.println("entrez un double");
                    double b = in.nextDouble(); // la méthode nextDouble lit le double entré
                    /*
                     * il existe bien sur les méthodes nextBoolean(), nextByte(), nextFloat(), nextLong() et nextShort() qui renvoient respectivement un
                     * boolean , un byte, un float, un long, un short.
                     */

                    System.out.println(s);
                    System.out.println(a);
                    System.out.println(b);
             }

    }


    et j'obtiens l'erreur:
    Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Unknown Source)
    at java.util.Scanner.next(Unknown Source)
    at java.util.Scanner.nextDouble(Unknown Source)
    at Clavier.main(Clavier.java:16)


    Enfin, en traquant le bug, j'ai remarqué que si au lien de rentrer un nombre décimal (comme 1.5) je rentrais un entier ça marchait! o_O
    Peut-on m'expliquer ? ^^
    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      25 novembre 2006 à 9:15:54

      Je crois que je sais pourquoi !

      System.out.println("entrez un int");
      int a = in.nextInt(); // la méthode nextInt() lit l'int entré


      C'est la que tu mets ton 1.5 ? (car si je le fais, ca fait la meme exception).
      int veut dire entier. Ce n'est donc pas un réel et tu ne peux pas mettre de virgule.
      • Partager sur Facebook
      • Partager sur Twitter
        25 novembre 2006 à 12:41:14

        Non ça ne vient pas de la je rentre bien le 1.5 en tant que double.
        Merci quand meme :)

        Pour être sur j'ai simplifié le code et il y a toujours la même erreur avec ceci:

        import java.util.*;

        public class Clavier {

               
                public static void main(String[] args) {
                                Scanner in = new Scanner(System.in); //On crée l'objet in de type Scanner qui va nous permettre d'utiliser plus facilement System.in

                        System.out.println("entrez un double");
                        double b = in.nextDouble(); // la méthode nextDouble lit le double entré

                        System.out.println(b);
                 }

        }


        Merci pour votre aide
        • Partager sur Facebook
        • Partager sur Twitter
          25 novembre 2006 à 13:09:47

          sous ubuntu dapper j'ai essayé le code et effectivement voilà le résultat

          thibault@famille-desktop:~$ java Clavier
          entrez un double
          1.5
          Exception in thread "main" java.util.InputMismatchException
          at java.util.Scanner.throwFor(Scanner.java:819)
          at java.util.Scanner.next(Scanner.java:1431)
          at java.util.Scanner.nextDouble(Scanner.java:2335)
          at Clavier.main(Clavier.java:10)
          thibault@famille-desktop:~$ javac Clavier.java
          thibault@famille-desktop:~$ java Clavier
          entrez un double
          1,5
          1.5
          thibault@famille-desktop:~$





          pour rentré un double dans le console j'ai du utiliser une virgule et pas un point. ;)
          • Partager sur Facebook
          • Partager sur Twitter
            25 novembre 2006 à 20:29:56

            Merci, avec la virgule ça marche ;)

            Il serait peut etre bon de le preciser dans le tuto non ?
            • Partager sur Facebook
            • Partager sur Twitter
              25 novembre 2006 à 22:37:20

              moi le point il marche. Ca dépend du charset de la console surement.
              • Partager sur Facebook
              • Partager sur Twitter
                15 novembre 2017 à 10:39:19

                Essaie ca:
                Scanner scanner =newScanner(System.in).useLocale(Locale.US);

                Dans certain pays on dira 1,5 dans d'autre 1.5 

                Ta machine se charge de savoir automatiquement dans quel pays elle se trouve et ainsi savoir si on doit parler de virgule ou de point ;)

                • Partager sur Facebook
                • Partager sur Twitter

                [Java] Probleme avec input

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown