Probleme de lecture au clavier

Résolu
Messages postés
29
Date d'inscription
mercredi 27 octobre 2004
Statut
Membre
Dernière intervention
17 août 2007
-
Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
-
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

Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
111
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
Messages postés
29
Date d'inscription
mercredi 27 octobre 2004
Statut
Membre
Dernière intervention
17 août 2007

 

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
Messages postés
29
Date d'inscription
mercredi 27 octobre 2004
Statut
Membre
Dernière intervention
17 août 2007

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.
Messages postés
5366
Date d'inscription
dimanche 4 mai 2003
Statut
Modérateur
Dernière intervention
6 décembre 2021
111
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