Question sur java
Répondre à la discussion
Affichage des résultats 1 à 20 sur 20

Question sur java



  1. #1
    invite6f02fc18

    Question sur java


    ------

    Bonjour chers tous ravis de faire partir de la plate forme.
    J'ai une préoccupation je voudrais une expression qui me permettrait de faire entrer une donnée exclusivement numéro ( en condition avec if par exemple) de tel sorte que si l'utilisateur frappe une touche alphabétique le message d'erreur (exception) s'affiche

    -----

  2. #2
    umfred

    Re : Question sur java

    avec un Scanner, et un nextInt() ou autre, tu récupères directement en entier, ou un message d'erreur si pas compatible avec le type https://www.w3schools.com/java/java_user_input.asp

  3. #3
    pm42

    Re : Question sur java

    Citation Envoyé par Picojav Voir le message
    J'ai une préoccupation je voudrais une expression qui me permettrait de faire entrer une donnée exclusivement numéro ( en condition avec if par exemple) de tel sorte que si l'utilisateur frappe une touche alphabétique le message d'erreur (exception) s'affiche
    Si tu lis en mode texte, c'est à dire sans interface graphique, il n'y a pas de façon de faire en Java qui fonctionne indépendamment du système d'exploitation et il faut utiliser la solution de Umfred.
    Tu peux aussi essayer avec une librairie comme JCurses qui te donnera peut-être cette possibilité sous Windows et Linux.

    Si tu utilises une interface graphique, cela fait en général avec un "Listener" qui reçoit chaque touche et fait le filtrage. Il faudrait savoir laquelle : Swing, SWT, JavaFX, etc.

  4. #4
    invite6f02fc18

    Re : Question sur java

    Ah ok . Merci de me répondre.
    Vous voyez j'essaie de faire entrer uniquement des valeurs numériques. Je voudrais que si l'utilisateur entre une lettre par exemple "a" que le programme signale une erreur qui puisse être capté et orienté vers une exception enfin de poursuivre le processus
    Cordialement

  5. A voir en vidéo sur Futura
  6. #5
    pm42

    Re : Question sur java

    Citation Envoyé par Picojav Voir le message
    Vous voyez j'essaie de faire entrer uniquement des valeurs numériques. Je voudrais que si l'utilisateur entre une lettre par exemple "a" que le programme signale une erreur qui puisse être capté et orienté vers une exception enfin de poursuivre le processus
    Est ce que tu te rends compte que tu t'es contenté de répéter ton message initial sans prendre en compte les réponses ?

  7. #6
    invite6f02fc18

    Re : Question sur java

    Pm42, j'ai lu. C'est justement le Scanner que j'utilise via le nextInt() mais ceci n'empêche pas l'arrêt du programme lorsque une valeur alphabétique ou autre est entré au clavier.

  8. #7
    vgondr98

    Re : Question sur java


  9. #8
    Merlin95

    Re : Question sur java

    J'ai pas bien compris non plus comment marche Scanner et en quoi il répond à la question (marrant quand on reproche à l'autre de se répéter) mais ce que tu veux c'est que chose comme le premier exemple de cette page : http://www.neophytes.info/java/a3.html
    Dernière modification par Merlin95 ; 26/05/2021 à 11h01.

  10. #9
    Merlin95

    Re : Question sur java

    Citation Envoyé par vgondr98 Voir le message
    Je préfère ca :

    try {

    } catch (UnTypeDException e) {

    }

  11. #10
    pm42

    Re : Question sur java

    Citation Envoyé par Merlin95 Voir le message
    mais ce que tu veux c'est que chose comme le premier exemple de cette page : http://www.neophytes.info/java/a3.html
    Non, cela ne marchera pas. Les entrées clavier sont bufferisées par défaut et ce au niveau de l'OS.
    Cela veut dire que le programme Java ne recevra qu'une ligne complète, après que l'utilisateur ait appuyé sur Entrée.
    System.in.read() permettra alors de lire cette ligne caractère par caractère mais absolument pas d'empêcher qu'elle contienne autre chose que des chiffres.

    Il faut mettre le terminal (Linux/Unix) ou la console (Windows) en mode "raw" ce qui se fait avec tcsetattr et SetConsoleMode respectivement en C mais n'est pas disponible par défaut en Java parce que cela ne peut pas être portable (de mémoire, certains OS ne supportent pas ce concept de mode raw).

  12. #11
    vgondr98

    Re : Question sur java

    Scanner sc = new Scanner (System.in);
    sc.hasNextInt()

    J'ai testé l'autocomplétion sur mon IDE, je vois qu'il y a une méthode hasNextInt() qui retourne true si le caractère suivant est un entier.

  13. #12
    umfred

    Re : Question sur java

    si c'est en mode console, sans doute compliqué d'intercepter la frappe.
    Si c'est dans un composant graphique, il a peut-être un événement de type keyevent ou keylistener (je paraphrase les réponses de pm42 je crois )

  14. #13
    pm42

    Re : Question sur java

    Citation Envoyé par umfred Voir le message
    (je paraphrase les réponses de pm42 je crois )
    Oui mais c'est la bonne réponse joyeusement ignorée
    Pourtant, on parle d'un sujet, la bufferisation des entrées clavier et la nécessité de la désactiver pour faire un programme interactif qui doit avoir dans les 50 ans.

  15. #14
    Merlin95

    Re : Question sur java

    @pm42 oui ok pour le PP ça aura un untérêt surtout théorique.

    @vgondr98 +1

    Pour moi c'est le token qu'il vérifie et non le caractère. Mais c'est possible de le faire en théorie en utilisant un délimiteur de caractère adapté ce que permet apparemment de faire la classe Scanner avec la méthode useDelimiter définissant grâce à une regexp le ou les délimiteurs. Avec "." chaque caractère sera un token.
    Dernière modification par Merlin95 ; 26/05/2021 à 13h12.

  16. #15
    Merlin95

    Re : Question sur java

    Mais en effet dans le cas où le Scanner "wrap" System.in à cause de la "bufférisation" évoquée par pm42 ca ne marchera pas.

    @pm42 je trouve que "qui a donné la bonne réponse" si c'est ce que vous sous-entendez est un jeu assez puéril...
    Dernière modification par Merlin95 ; 26/05/2021 à 13h23.

  17. #16
    Merlin95

    Re : Question sur java

    Citation Envoyé par Merlin95 Voir le message
    . Avec "." chaque caractère sera un token.
    Pas sûr du comportement avec "." finalement. A tester peut-être.

  18. #17
    umfred

    Re : Question sur java

    une réponse de StackOververflow qui va dans le sens de la réponse déjà apportée, et qui montre divers codes utilisant jcurses et jline3 https://stackoverflow.com/questions/...-user-types-it

  19. #18
    vgondr98

    Re : Question sur java


  20. #19
    pm42

    Re : Question sur java

    Citation Envoyé par umfred Voir le message
    une réponse de StackOververflow qui va dans le sens de la réponse déjà apportée, et qui montre divers codes utilisant jcurses et jline3 https://stackoverflow.com/questions/...-user-types-it
    Oui, c'est là où j'avais trouvé la référence à jcurses mais c'est vrai que jline est peut-être suffisant.


    Citation Envoyé par vgondr98 Voir le message
    Je pense qu'elle est adaptée pour faire du très bas niveau dans une interface graphique, un jeu par exemple mais pas en mode console.

  21. #20
    vgondr98

    Re : Question sur java

    Citation Envoyé par pm42 Voir le message
    Je pense qu'elle est adaptée pour faire du très bas niveau dans une interface graphique, un jeu par exemple mais pas en mode console.
    Ok merci.

    Pour ma part, je contrôle les inputs avec du html et javascript et j'envoie les résultats contrôlés à java par web service rest.
    C'est plutôt simple.

Discussions similaires

  1. Question wsdl java JEE
    Par invite73b93f64 dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 25/02/2013, 09h17
  2. Question sur le JAVA, composant CANVAS
    Par invitea613d208 dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 29/05/2011, 10h48
  3. Question JAVA
    Par inviteb4939f73 dans le forum Logiciel - Software - Open Source
    Réponses: 10
    Dernier message: 11/07/2008, 18h47
  4. Salut question en java
    Par inviteafcb36d6 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 04/07/2008, 11h17
  5. question sur java
    Par inviteffe8ce31 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 03/10/2005, 16h21