JAVA :: LectureClavier

ebilel -  
 ebilel -
Bonjour,
j'ai une méthode:

void AjoutJoueur(Joueur j,int a)
{int y=0;
if(NbJoueur!=0)
{
while(y==0)
{
for(int i=0;i<NbJoueur;i++)
{y=1;
if(j.numero==tab[i].numero)
{
y=0;
System.out.println("Il y a un autre joueur le numero:"+tab[i].numero);
int v=LectureClavier.lireEntier("Donnez le nouveau numero du "+j.nom+" "+j.prenom+":");
j.setNumero(v);
}
}
}
}
tab[NbJoueur]=j;
NbJoueur++;
}

à l'exécution il y a un erreur:

Donnez le nouveau numero du Hamroni Ayedi:3
Erreur lecture entier
java.lang.NumberFormatException: For input string: "Ayedi:3"
java.lang.NumberFormatException: For input string: "Ayedi:3"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:447)
at java.lang.Integer.parseInt(Integer.java:497)
at LectureClavier.lireEntier(LectureClavier.java:73)
at LectureClavier.lireEntier(LectureClavier.java:63)
at Equipe.AjoutJoueur(Equipe.java:35)
at Equipe.main(Equipe.java:85)

Process completed.

je voudrais savoir comment corrigé ce erreur.
Et merci d'avance.
Configuration: Windows XP
Firefox 2.0.0.13

2 réponses

  1. lxav Messages postés 189 Statut Membre 71
     
    montre la méthode LectureClavier.lireEntier(String a)
    au fait tu as surement utiliser des parsint()
    sans mettre de try{}catch{}
    0
    1. ebilel
       
      merci
      mais je ne pense pas que le problème a cause de la méthode lectureclavier car j'ai utilisé la méthode lectureclavier dans des autres méthodes et elle marche.
      voici la méthode::
      public static int lireEntier(String prompt) {
      System.out.print(prompt);
      System.out.flush();
      return lireEntier();
      }
      0
  2. lxav Messages postés 189 Statut Membre 71
     
    java.lang.NumberFormatException: For input string: "Ayedi:3"
    java.lang.NumberFormatException: For input string: "Ayedi:3"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
    at java.lang.Integer.parseInt(Integer.java:447)

    bin vu ce message c'est le fait que tu retournes un string qui n'est pas convertible en int.
    "Ayedi:3" c'est pas faisable

    Peux tu montrer lireEntier()? ca vient surement de cela
    0
    1. ebilel
       
      voici la classe lectureclavier::


      import java.io.BufferedReader;
      import java.io.InputStreamReader;
      import java.util.Random;

      /**
      * <P>Cette classe a pour rle de faciliter la lecture de donnes partir du
      * clavier.</P>
      * <P>Elle definit une mthode de lecture pour les types de base les plus
      * courramment utiliss (int, float, double, boolean, String).</P>
      * <P>La lecture d'une valeur au clavier se fait en tapant celle-ci suivie d'un
      * retour chariot.</P>
      * <P>En cas d'erreur de lecture (par exemple un caractre a t tap lors de la
      * lecture d'un entier) un message d'erreur est affich sur la console et
      * l'excution du programme est interrompue.</P>
      * <P>Toutes les mthodes dinies dans cette classe sont prsentent sous deux
      * formes :<BR>
      * <UL>
      * <LI>une version avec un mesage d'invite en parmtre, message qui sera
      * affich sur la console avant la lecture</LI>
      * <LI>une version sans message d'invite</LI>
      * </UL>
      * </P>
      * <B>exemples d'utilisation de cette classe</B><BR>
      *
      * <PRE>
      *
      * char c = LectureClavier.lireChar("entrez un caractre :");
      * System.out.println("caractre lu : " + c);
      *
      * String s = LectureClavier.lireChaine("entrez une chaine :");
      * System.out.println("chaine lue : " + s);
      *
      * int i = LectureClavier.lireEntier("entrez un entier : ");
      * System.out.println("entier lu : " + i);
      *
      * float f = LectureClavier.lireFloat("entrez une rel (float) : ");
      * System.out.println("rel (float) lu : " + f);
      *
      * double d = LectureClavier.lireDouble("entrez une rel (double) : ");
      * System.out.println("rel (double) lu : " + d);
      *
      * boolean b = LectureClavier.lireOuiNon("entrez une rponse O/N : ");
      * System.out.println("booleen lu : " + b);
      *
      * </PRE>
      */
      public class LectureClavier {

      private static BufferedReader stdin = new BufferedReader(
      new InputStreamReader(System.in));

      /**
      * lecture au clavier d'un entier simple precision (int)
      *
      * @param prompt :
      * chane d'invite
      * @return l'entier lu
      */
      public static int lireEntier(String prompt) {
      System.out.print(prompt);
      System.out.flush();
      return lireEntier();
      }

      /**
      * lecture au clavier d'un entier simple precision (int)
      *
      * @return l'entier lu
      */
      public static int lireEntier() {
      try {
      return (Integer.parseInt(stdin.readLine()));
      } catch (Exception e) {
      erreurEntree(e, "entier");
      return 0; // mme si on passe jamais ici il faut un return !!
      }
      }

      /**
      * lecture au clavier d'une chaine de caractres
      *
      * @param prompt :
      * chane d'invite
      * @return la chaine lue
      */
      public static String lireChaine(String prompt) {
      System.out.print(prompt);
      System.out.flush();
      return lireChaine();
      }

      /**
      * lecture au clavier d'une chaine de caractres
      *
      * @return la chaine lue
      */
      public static String lireChaine() {
      try {
      return (stdin.readLine());
      } catch (Exception e) {
      erreurEntree(e, "chaine de caractres");

      return null;
      }
      }

      /**
      * lecture au clavier d'un rel simple prcision (float)
      *
      * @param prompt :
      * chane d'invite
      * @return le float lu
      */
      public static float lireFloat(String prompt) {
      System.out.print(prompt);
      System.out.flush();
      return lireFloat();
      }

      /**
      * lecture au clavier d'un rel simple prcision (float)
      *
      * @return le float lu
      */
      public static float lireFloat() {

      try {
      return (Float.valueOf(stdin.readLine()).floatValue());
      } catch (Exception e) {
      erreurEntree(e, "rel (float)");

      return (float) 0.0;
      }
      }

      /**
      * lecture au clavier d'un rel double prcision (double)
      *
      * @param prompt :
      * chane d'invite
      * @return le double lu
      */
      public static double lireDouble(String prompt) {
      System.out.print(prompt);
      System.out.flush();
      return lireDouble();
      }

      /**
      * lecture au clavier d'un rel double prcision (double)
      *
      * @return le double lu
      */
      public static double lireDouble() {
      try {
      return (Double.valueOf(stdin.readLine()).doubleValue());
      } catch (Exception e) {
      erreurEntree(e, "rel (double)");
      return 0.0;
      }
      }

      /**
      * lecture au clavier d'une rponse de type oui/non. Si la valeur tape est
      * "o" ou "O" cette mthode renvoie
      true
      , sinon elle renvoie
      *
      false
      .
      *
      * @param prompt :
      * chane d'invite
      * @return
      true
      si la chaine lue est "o" ou "O",
      *
      false
      sinon
      */
      public static boolean lireOuiNon(String prompt) {
      System.out.print(prompt);
      System.out.flush();
      return lireOuiNon();
      }

      /**
      * lecture au clavier d'une rponse de type oui/non. Si la valeur tape est
      * "o" ou "O" cette mthode renvoie
      true
      , sinon elle renvoie
      *
      false
      .
      *
      * @return
      true
      si la chaine lue est "o" ou "O",
      *
      false
      sinon
      */
      public static boolean lireOuiNon() {
      String ch;
      ch = lireChaine();
      return (ch.equals("o") || ch.equals("O"));
      }

      /**
      * lecture au clavier d'un caractre
      *
      * @param prompt :
      * chane d'invite
      * @return le caractre lu
      */
      public static char lireChar(String prompt) {
      System.out.print(prompt);
      System.out.flush();
      return lireChar();
      }

      /**
      * lecture au clavier d'un caractre
      *
      * @return le caractre lu
      */
      public static char lireChar() {
      String ch;
      ch = lireChaine();
      return ch.charAt(0);
      }

      /**
      * en cas d'erreur lors d'une lecture, affiche sur la sortie standard
      * (System.out) un message indiquant le type de l'erreur ainsi que la la
      * pile des appels de mthodes ayant conduit cette erreur.
      *
      * @param e
      * l'exception dcrivant l'erreur.
      * @param message
      * le message d'erreur afficher.
      */
      private static void erreurEntree(Exception e, String message) {
      System.out.println("Erreur lecture " + message);
      System.out.println(e);
      e.printStackTrace();
      System.exit(1);
      }

      public static Random randomGenerator = new Random();

      public static int tirerUnChiffre() {
      return randomGenerator.nextInt(9) + 1;
      }


      } // LectureClavier
      0