Java-déclaration de variable [Résolu/Fermé]

Signaler
Messages postés
115
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
2 juillet 2005
-
 Max -
Bonjour,
J'apprends à développer sous jaja et j'ai besoin de déclarer une variable qui soit exclusivement numérique, et de surcroit entiere.
Elle ne doit pas prendre la valeur d'une lettre.
Est-il possible de déclarer une variable de ce type?
Merci de votre aide,
tutu

5 réponses

Messages postés
115
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
2 juillet 2005
36
Bonjour philtrain,
J'ai étudié la question.
En fait, ta proposition est juste, à tel point que c'est la classe Lire qui s'en charge, donc elle prend la main dans la proposition que tu m'as donnée, mais tu ne pouvais pas le savoir, vu que tu n'as pas le code!

Ce sont mes profs qui l'ont mis au point , le voici :
-------------------------------------------------------------------------------
import java.io.*;
public class Lire
{
public static String S() // Lire un String
{
String tmp = "";
char C='\0';
try {
while ((C=(char) System.in.read()) !='\n')
{
if (C != '\r') tmp = tmp+C;

}
}
catch (IOException e)
{
System.out.println("Erreur de frappe");
System.exit(0);
}
return tmp;
} // fin de S()

public static byte b() // Lire un entier byte
{
byte x=0;
try {
x=Byte.parseByte(S());
}
catch (NumberFormatException e) {
System.out.println("Format numérique incorrect");
System.exit(0);
}
return x ;
}

public static short s() // Lire un entier short
{
short x=0;
try {
x=Short.parseShort(S());
}
catch (NumberFormatException e) {
System.out.println("Format numérique incorrect");
System.exit(0);
}
return x ;
}

public static int i() // Lire un entier
{
int x=0;
try {
x=Integer.parseInt(S());
}
catch (NumberFormatException e) {
System.out.println("Format numérique incorrect");
System.exit(0);
}
return x ;
}

public static long l() // Lire un entier long
{
long x=0;
try {
x=Integer.parseInt(S());
}
catch (NumberFormatException e) {
System.out.println("Format numérique incorrect");
System.exit(0);
}
return x ;
}

public static double d() // Lire un double
{
double x=0.0;
try {
x=Double.valueOf(S()).doubleValue();
}
catch (NumberFormatException e) {
System.out.println("Format numérique incorrect");
System.exit(0);
}
return x ;
}

public static float f() // Lire un float
{
float x=0.0f;
try {
x=Double.valueOf(S()).floatValue();
}
catch (NumberFormatException e)
{
System.out.println("Format numérique incorrect");
System.exit(0);
}
return x ;
}

public static char c() // Lire un caractere
{
String tmp=S();
if (tmp.length()==0)
return '\n';
else
{
return tmp.charAt(0);
}
}
}
-------------------------------------------------------------------------------


Donc tu avais juste, mais on ne peut pas appliquer telle quelle ta soluition sans modifier la classe Lire.
Je te remercie
tutu
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63718 internautes nous ont dit merci ce mois-ci


Bonsoir,

int i = 10; // par exemple

c'est ok?

@+
Messages postés
115
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
2 juillet 2005
36
En fait, ce que je souhaite c'est, si l'utilisateur rentre une lettre,pouvoir lui dire de recommencer sa saisie.
Et le probleme c'est que le programme renvoie systematiquement un message "format numérique incorrect" qui met fin au programme.
J'ai limité les erreurs de saisie mais ce n'est que du bidouillage.

Le probleme reste donc posé.
C'est la variable dbage qui pose probleme(je l'ai mis en double)
Voici le code :


//-------------------------------PROGRAMME TQAGE

public class Tqage11
{
public static void main(String [] argument)
{
double dbage ; //definition des variables
char chrep ;
chrep = 'o' ; //on définit la valeur oui à l'origine


while(chrep == 'o')
{
System.out.print("Entrez votre age: ");//saisie de l'age
dbage=Lire.d();

if((dbage<0)||(dbage>=200))
System.out.println("veuillez vérifier votre saisie, merci");
else
if((dbage<18)&&(dbage>0))
System.out.println("Erreur!Ce programme est reserve aux personnes majeures non retraitees.");
else
if((dbage>65)&&(dbage<200))
System.out.println("Erreur!Ce programme est reserve aux personnes majeures non retraitees.");
else
do
{
if((17<dbage)&&(dbage<27))
System.out.println("Statut JEUNE");
else
if((26<dbage)&&(dbage<66))
System.out.println("Statut ADULTE");
System.out.print("Voulez-vous recommencer ? (o-n) : ");
chrep=Lire.c();

while((chrep!='o')&&(chrep!='n'))
{
System.out.print("merci d'indiquer oui par o et non par n ");
System.out.print("oui=o ou non=n ? : ");
chrep= Lire.c();
}
}
while((chrep!='o')&&(chrep!='n'));

}
System.out.println("Fin");
}
}


merci pour ton aide,
tutu

il faut alors implémenter l'exception NumberFormatException:

try {
    dbage = Lire.d();
}
catch(NumberFormatException) {
    // Ce qui arrive si l'utilisateur n'entre pas un double
}


C'est ça?

@+
Messages postés
115
Date d'inscription
mercredi 20 avril 2005
Statut
Membre
Dernière intervention
2 juillet 2005
36
Il est tard, je vais me reposer, j'étudierai demain ta proposition et te tiendrai au courant au plus tôt.
Merci énormément pour ton aide,
tutu
tu mets "Int"
Max