System.in.read
Martin
-
Utilisateur anonyme -
Utilisateur anonyme -
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();
}
}
}
}
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:
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
Cordialement,
Dan
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