Exercice de java

Fermé
leb - 19 déc. 2010 à 11:51
 alpnho5o - 19 déc. 2010 à 15:52
Bonjour,
Je voudrais savoir comment Ecrire un programme qui demande à l'utilisateur d'introduire un entier au clavier et qui affiche la la somme de ses chiffres
pa exemple : 1234 donne 10.
( EN java )

A voir également:

3 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
19 déc. 2010 à 12:02
Pour l'utilisation du clavier, regarde du côté de Scanner(System.in)
En particulier Scanner.nextInt() vu ce que tu veux faire.
Pour l'affichage System.out.println(int) et c'est fini...
0
la classe Clavier tu p la laisser dans le code de la classe SommeChiffre ou si tu veux faire plus proprement tu la met dans un fichier separé que tu me dans le meme repertoire que SommeChiffre ou mieux tu creer un package Clavier que tu importe apres dans SommeChiffre et en configurant ton environnement en consequence.
G te fourni le code source des class dans le meme fichier. Celle de Clavier, g les trouver dans un livre de Claude Delanoy que je possede.
/* classe fournissant des fonctions de lecture au  clavier inspiré du livre de Claude Delanoy */
import java.io.* ;
class Clavier
{ public static String lireString ()   // lecture d'une chaine
  { String ligne_lue = null ;
    try
    { InputStreamReader lecteur = new InputStreamReader (System.in) ;
      BufferedReader entree = new BufferedReader (lecteur) ;
      ligne_lue = entree.readLine() ;
    }
    catch (IOException err)
    { System.exit(0) ;
    }
    return ligne_lue ;
  }
  public static float lireFloat ()   // lecture d'un float
  { float x=0 ;   // valeur a lire
    try
    { String ligne_lue = lireString() ;
      x = Float.parseFloat(ligne_lue) ;
    }
    catch (NumberFormatException err)
    { System.out.println ("*** Erreur de donnee ***") ;
      System.exit(0) ;
    }
    return x ;
  }
  public static double lireDouble ()   // lecture d'un double
  { double x=0 ;   // valeur a lire
    try
    { String ligne_lue = lireString() ;
      x = Double.parseDouble(ligne_lue) ;
    }
    catch (NumberFormatException err)
    { System.out.println ("*** Erreur de donnee ***") ;
      System.exit(0) ;
    }
    return x ;
  }
  public static int lireInt ()         // lecture d'un int
  { int n=0 ;   // valeur a lire
    try
    { String ligne_lue = lireString() ;
      n = Integer.parseInt(ligne_lue) ;
      }
    catch (NumberFormatException err)
    { System.out.println ("*** Erreur de donnee ***") ;
      System.exit(0) ;
    }
    return n ;
  }
}/* fin class Clavier ***/

public class SommeChiffre{
    public static int sommeChiffre(int nombre){
       int sc=0;
       while(nombre != 0)
       {
             sc += nombre%10;
             nombre /= 10;
      }
      return sc;
   }
   public static void main(String[] args){
   
       System.out.print ("donnez un entier: ") ;
       int n  ;
       n = Clavier.lireInt() ; 
       System.out.println ("merci pour  " + n) ;
       System.out.println ("la somme de ces chiffres est:  " +sommeChiffre(n)) ;
  }

}
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
Modifié par KX le 19/12/2010 à 15:42
A quoi ça sert de réinventer la roue ? Scanner fait déjà ce que fait cette classe Clavier...
Alors autant utiliser les classes standards (donc optimales !)

De plus, il y a plus malin pour calculer la somme des chiffres : puisqu'on fait une entrée au clavier, on obtient une chaines de caractères, dans notre cas une succession de chiffres, il suffit donc de lire caractère par caractère (chiffre par chiffre) pour faire la somme...

import java.util.Scanner;  

public static void main(String args[])
{
	System.out.print("Entrez un nombre : ");
	String s=new Scanner(System.in).nextLine();
	int n=0;
	for (int i=0; i<s.length(); i++)
		n+= s.charAt(i) - '0';
	System.out.println("Somme des chiffres : "+n);
}
0
effectivement il est tt a fait possible d'utiliser ta methode. C juste par souci de compatibilité avec java < a java 5.0 que moi je prefere utiliser cette classe car j'ai deja utiliser la classe Scanner sur un projet et quand je les fait tourner en presentation du projet; mon programme ne fonctionnait plus et comme je savais pas que c'etais du a la version de java; j'ai passé un sale moment et depuis je ne m'en sert plus. donc c juste une kestion de choix.
0