Saisir une entrée au clavier (java)

Résolu
Bonjour,

J'ai ce bout de code:

try
			  {
				Scanner s = new Scanner(System.in);
				System.out.println("entrez le pas d'itération");
				h = s.nextDouble();
			  }
			  catch(Exception e){System.out.println("pas de h :(");}


Sachant que h est de type :
public static double h;


seulement voila, sa ne marche pas quand je rentre 0.2 par exemple... si vous savez pourquoi, votre aide est la bienvenu.

--
La vérité appartient à ceux qui la cherchent et non point à ceux qui prétendent la détenir.
(n'oubliez pas de mettre résolu si vous avez trouvé votre   bonheur: pensez aux autres^^')
Configuration: windows viste, firefox

11 réponses

  • Votes
  • Date
  • Date décroissante
  1. bonjour,

    qu'est ce qui ne "marche pas" ? erreur de compilation ou à l'exécution ? il fait un truc qu'il ne devrait pas ? il ne fait pas un truc qu'il devrait ? si oui quoi ? "Avec 0.2 par exemple" : ça veut dire qu'il ne fonctionne pas avec 0.2, mais il fonctionne avec autre chose ? si oui quoi ? si non, il faudrait le préciser.

    Sinon je vois quelque chose de bizarre : System.out.println("pas de h :(");

    Ceci n'affichera pas la valeur de h....
    1. et bien le try ne marche pas, le programme compile, touit fonctionne sauf cette partie, h = s.nextDouble();

      sa rentre direct dans le catch et sa affiche pas de h :( parceque le try a pas marcher.

      En gros, on fait comment pour enregistrer une entré au clavier de type 0.x
      1. dans le catch tu peux afficher l'exception, le message pourra être instructif.
    2. J'arrive pas à la mettre :s je sais pas comment on fait, sa marche pas IOException e
      1. Salut,

        Donne nous la partie du code concernée ce sera plus facile à corriger...

        Cordialement,

        Dan
        1. j'ai mis juste la partie concerné et de manière à ce qu'elle compile:

          import java.io.IOException;
          import java.util.Scanner;
          
          class TestLissage
          {
          	
          	public static int n;
          	public static double y0, x0, Yn, Xn, h;
          	public static int choix;
          	
          	  public static void main(String[] args)
          	  {
          		  while (choix != 6 && choix != 5 && choix != 4 && choix != 3 && choix != 2 && choix != 1 && choix != 7)
          		  {
          			  System.out.println("veuillez choisir l'application à résoudre:");
          			  System.out.println("");
          			  System.out.println("1: y'(x) = x + y(x)	solution: y(x) = exp(x)-x-1	avec y(0) = 0");
          			  System.out.println("2: y'(x) = -2xy(x)	solution: y(x) = exp(-x²)	avec y(0) = 1");
          			  System.out.println("3: y'(x) = -xy²(x)	solution: y(x) = 2/(1+x²)	avec y(0) = 2");
          			  System.out.println("4: y'(x) = y(x)		solution: y(x) = exp(x)		avec y(0) = 1");
          			  System.out.println("5: y'(x) = ");
          			  System.out.println("6: y'(x) = ");
          			  System.out.println("7: quitter");
          			  try
          			  {
          				  Scanner s = new Scanner(System.in);
          				  System.out.println("entrez votre choix");
          				  choix = s.nextInt();
          			  }
          			  catch(Exception e){}
          		  }
          		  if (choix == 1|| choix == 2 || choix == 3 || choix == 4 || choix == 5 || choix == 6)
          		  {
          			  try
          			  {
          				Scanner s = new Scanner(System.in);
          				System.out.println("entrez le nombre d'itération");
          				n = s.nextInt();
          			  }
          			  catch(Exception e){}
          			  try
          			  {
          				Scanner s = new Scanner(System.in);
          				System.out.println("entrez le pas d'itération");
          				h = s.nextDouble();
          			  }
          			  catch(Exception e){}
                                    System.out.println(choix);
                                    System.out.println(n);
                                    System.out.println(h);
          		  }
          }
          
          1. Re,

            Pour avoir la liste StackTrace tu ajoutes ceci à chaque catch:

            catch(Exception e)
                           {
                              System.err.println("Exception :");
                              e.printStackTrace();
                           }
            


            Dan
            1. sa me met

              Exception :
              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 TestLissage.main(TestLissage.java:44)

              donc sa correspond à cette ligne:

              h = s.nextDouble();