Probleme de lecture au clavier

Résolu
Anysse Messages postés 29 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 17 août 2007 - 13 août 2006 à 17:04
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 13 août 2006 à 23:34
Bonjour, je viens du  C/C++, je me met a peine au JAva.

Ca fait 24h que je cherche de partout sur le net, comment lire une donnée au clavier, et je ne trouve rien
(Enfin, pour lire un String y a pas de probleme, j'utilise le "Bufferedreader"). Je ne sais pas comment lire un int ou un char. En gros l'equivalent du "scanf" en C
Certain m'ont dis de convertir le string en int ou en ce que je veux, mais si je veux faire les choses proprement ?? N'y aurait-il pas un moyen de lire directement un int ou un char. (Genre scanf("%d",&x) ou scanf("%c",&x)) ??
Voila merci d'avance.
Je commence a devenir dingue sur tout les tuto que je trouve y a rien sur la lecture d'une donnée, ou ca reste tres vague.

4 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
13 août 2006 à 17:24
Salut,

voici ce que tu peux faire avec le jdk<= 1.4

public class Read {

  public static String getLine() { // 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) {
      return "\n";
    }
    return tmp;
  }

  public static byte getByte() {
    byte x = 0;
    try {
      x = Byte.parseByte(getLine());
    } catch (NumberFormatException e) {   
       return -1;
    }
    return x;
  }

  public static short getShort() {
    short x = 0;
    try {
      x = Short.parseShort(getLine());
    }
    catch (NumberFormatException e) {
      return -1;
    }
    return x;
  }

  public static int getInt() {
    int x = 0;
    try {
      x = Integer.parseInt(getLine());
    }
    catch (NumberFormatException e) {
      return -1;
    }
    return x;
  }

  public static long getLong() {
    long x = 0;
    try {
      x = Integer.parseInt(getLine());
    }
    catch (NumberFormatException e) {
      return -1;
    }
    return x;
  }
 
  public static double getDouble() {
    double x = 0.0;
    try {
      x = Double.valueOf(getLine()).doubleValue();
    }
    catch (NumberFormatException e) {
      return -1;
    }
    return x;
  }

  public static float getFloat() {
    float x = 0.0f;
    try {
      x = Double.valueOf(getLine()).floatValue();
    }
    catch (NumberFormatException e) {
      return -1;
    }
    return x;
  }
 

  public static char getChar() {
    String tmp = getLine();
    if (tmp.length() == 0)
      return '\n';
    else {
      return tmp.charAt(0);
    }
  }
}

et la si tu es avec le un jdk >= 1.5 alors la c'est le bonheur tu peux utiliser l'objet Scanner avec le quel tu peux lire fichier, clavier, socket, bref tout type d'inputstream.

Pour info tu as printf en java depuis le jdk 1.5

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
3
Anysse Messages postés 29 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 17 août 2007
13 août 2006 à 18:21
 

En d'autres termes tu es obligé en Java d'implementer ta propre classe qui utilise les entrees sorties, enfin pour la lecture.
Ca parait bizzare qu'il n 'y ai pas deja une fonction de base qui le permet, surprenant :)
Bref, je te remerci pour ta reponse !
je vais essaier ca tout de suite, sinon je sius aussi en train de telechargé le JDK 5.0 pour tenter l'autre solution
0
Anysse Messages postés 29 Date d'inscription mercredi 27 octobre 2004 Statut Membre Dernière intervention 17 août 2007
13 août 2006 à 23:13
Re
J'ai mis du temps pour reussir a utiliser la classe scanner, mais c'est bon ca marche pour les int, float, short ...., les nombres quoi
Mais pour les caracteres, y a rien.
Sinon concernant la classe read que tu ma filé avant, C'est parfait.
Merci beaucoup.
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
13 août 2006 à 23:34
Salut,

exemple d'utilisation en continue avec Scanner

Scanner sc = new Scanner(System.in);
String nl = System.getProperty("line.separator");
String data = "";
while(sc.hasNext()){
    String str = sc.newtLine();
    if(str.compareToIgnoreCase("q")) break;
    data += str + nl;//comme ca on rajoute le char de fin de ligne de l'os


}
sc.close();
System.out.println(data);

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
0
Rejoignez-nous