JAVA :: LectureClavier

Fermé
Utilisateur anonyme - 16 avril 2008 à 19:55
 Utilisateur anonyme - 16 avril 2008 à 21:17
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.
A voir également:

2 réponses

lxav Messages postés 189 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 28 juillet 2008 71
16 avril 2008 à 20:00
montre la méthode LectureClavier.lireEntier(String a)
au fait tu as surement utiliser des parsint()
sans mettre de try{}catch{}
0
Utilisateur anonyme
16 avril 2008 à 20:14
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
lxav Messages postés 189 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 28 juillet 2008 71
16 avril 2008 à 20:28
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
Utilisateur anonyme
16 avril 2008 à 21:17
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