System.in.read
Martin
-
danimo -
danimo -
Bonjour,
Je suis débutant avec JAVA.
Je sais qu'une question similaire a été demandée (j'ai fait plusieurs essais) et cela ne fonctionne pas (System.in.read).
Voici mon programme:
/*tp2p1b : afficher demi pyramide avec hauteur choisie. */
public class tp2p1b {
public static void main (String args[])
{
int a;
System.out.print("a= ");
a= System.in.read();
{
for (int i=1;i<=a;i++)
{
for (int j=1;j<=i;j++) System.out.print("*");System.out.println();
}
}
}
}
J'ai toujours des erreurs avec system.in.read ou IOE.
Merci de votre aide.
Martin
Je suis débutant avec JAVA.
Je sais qu'une question similaire a été demandée (j'ai fait plusieurs essais) et cela ne fonctionne pas (System.in.read).
Voici mon programme:
/*tp2p1b : afficher demi pyramide avec hauteur choisie. */
public class tp2p1b {
public static void main (String args[])
{
int a;
System.out.print("a= ");
a= System.in.read();
{
for (int i=1;i<=a;i++)
{
for (int j=1;j<=i;j++) System.out.print("*");System.out.println();
}
}
}
}
J'ai toujours des erreurs avec system.in.read ou IOE.
Merci de votre aide.
Martin
2 réponses
-
/*tp2p1b : afficher demi pyramide avec hauteur choisie. */
import java.util.Scanner;
public class tp2p1b {
public static void main(String[] args){
int a;
Scanner scan=new Scanner(System.in);
System.out.print("a= ");
a = scan.nextInt();
{
for (int i=1;i<=a;i++)
{
for (int j=1;j<=i;j++) System.out.print("*");System.out.println();
}
}
}
} -
Salut,
Pour la 1ère version (System.in), javac indique :
"unreported exception java.io.IOException; must be caught or declared to be thrown."
Il suffirait d'ajouter un bloc try /catch pour pouvoir tester:public class tp2p1b { public static void main (String args[]) { int a; System.out.print("a= "); try { a= System.in.read(); { for (int i=1;i<=a;i++) { for (int j=1;j<=i;j++) System.out.print("*");System.out.println(); } } } catch (Exception e) { e.printStackTrace(); } } }
Mais on se rendra compte que le résultat espéré n'est pas celui attendu concernant la hauteur:
a= System.in.read(); tout d'abord n'accepte qu'un caractère mais ce n'est pas le caractère entré qu'on obtient dans a mais sa valeur décimale.
Par exemple pour o (zero), on obtient 48, pour 1, 49,... pour 9, 57 et ce sont ces valeurs qui donneront la hauteur.
On pourait soustraire 48 à a mais il n'y a pas beaucoup de cas de hauteur sachant que 0 et 1 sont à éliminer il rest 3 à 9.
Ce qui fait que ton idée d'utiliser Scanner est la bonne.
En plus la 2ème version compile et s'exécute.
Encore un "MAIS":
Quelle est la version java que tu utilises ?
Si tu as des problèmes, c'est peut-être que ta version est inférieure à 1.5.
Si c'est le cas, tu devras te tourner vers la solution
// Definir un flux de caracteres d'entrée: fluxE InputStreamReader isr = new InputStreamReader(System.in); BufferedReader fluxE = new BufferedReader(isr); // L'intro termine par <INTRO> String entree = fluxE.readLine(); int a = Integer.parseInt(entree()); }
Cordialement,
Dan