Saisir une entrée au clavier (java)

Résolu
varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   -  
 danimo -
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

  1. Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
     
    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....
    0
  2. varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   707
     
    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
    0
    1. Pacorabanix Messages postés 4122 Date d'inscription   Statut Membre Dernière intervention   663
       
      dans le catch tu peux afficher l'exception, le message pourra être instructif.
      0
  3. varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   707
     
    J'arrive pas à la mettre :s je sais pas comment on fait, sa marche pas IOException e
    0
  4. danimo
     
    Salut,

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

    Cordialement,

    Dan
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   707
     
    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);
    		  }
    }
    
    0
  7. danimo
     
    Re,

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

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


    Dan
    0
  8. varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   707
     
    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();
    0
  9. danimo
     
    faire un essai en entrant 0,2 >>>> virgule

    Dan
    0
  10. varfendell Messages postés 3259 Date d'inscription   Statut Membre Dernière intervention   707
     
    t'es trop fort :)

    sa marche, merci beaucoup
    0
  11. danimo
     
    Je pense que tu as compri pourquoi: la locale...

    Dan
    0