Problème Java
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 33

Problème Java



  1. #1
    invitee32ad308

    Problème Java


    ------

    Bonjour,

    J'essaye de faire le labo java suivant : Lire un nombre entier nbr compris entre 10001 et 99999 avec le chiffre des unités différent de 0. Une lecture doit être redemandée si l’utilisateur entre une autre valeur.Et écrire une classe Lib pour sommeChiffres(calculer somme des chiffres que l'utilisateur entre) -->Appeler la méthode statique Lib.sommeChiffres(nbr) qui doit retourner une valeur entière qui correspond à la somme des chiffres de nbr.Et symetrique--> Appeler la méthode statique Lib.symetrique(nbr) qui doit retourner une valeur entière qui correspond au symétrique du nombre nbr.(symetrique = retourner la valeur que utilisateur entre à l'envers).

    J'aimerais savoir ou se trouve mes fautes:

    Code:
    import javax.swing.JOptionPane;
    public class Java31 {
    
       public static void main(String args[])
        {
       String str,str1,message=null;
       int nombre=0,a,b,c,d,e=0,somme,symetrique;
       //Demander à l'utilisateur d'entrer une valeur entière comprise
       //entre 10001 et 999999
    if(e==0)
       do{
           str=JOptionPane.showInputDialog("Entrez nbr (10001 et 99999)");
           //Convertir le texte en valeur numérique entière
           nombre= Integer.parseInt(str);
    
       }
       while( nombre< 10001 || nombre >999999 );
    
    a= nombre/10000;
    nombre = nombre%10000;
    b= nombre/1000;
    nombre= nombre%1000;
    c=nombre/100;
    nombre=nombre%100;
    d=nombre/10;
    e=nombre%10;
       
    
      somme = Lib1.sommeChiffres( nombre);
    
      symetrique = Lib1.symetrique( nombre);
    
      message = "La somme des chiffres de" + nombre + "est égale à" + somme + ""
              + "\n Le symétrique de" + nombre + "est" + symetrique;
       
    
    JOptionPane.showMessageDialog(
            null,
            message,
            "Laboratoire 1",
            JOptionPane.INFORMATION_MESSAGE
            );
    System.exit(0);
    }}
    
    Ma classe Lib : 
    
    public class Lib1 {
    
        static int sommeChiffres(int chiffre)
        {
        int a , reste;
    
        a=0;
        reste=0;
        do{
            a=chiffre%10;
            reste = reste + a ;
            chiffre =chiffre/10;
        }
       while(chiffre!=0);
        return chiffre;
        }
    
    
    
    static int symetrique( int nombre1)
    
        {
    
        int a,b,c,d,e,nombre=0;
    a= nombre/10000;
    nombre = nombre%10000;
    b= nombre/1000;
    nombre= nombre%1000;
    c=nombre/100;
    nombre=nombre%100;
    d=nombre/10;
    e=nombre%10;
    
    nombre1 = a+b+c+d+e;
    return nombre1;
    }

    Merci d'avance

    -----
    Dernière modification par yoda1234 ; 23/09/2011 à 14h40.

  2. #2
    invite4492c379

    Re : Problème Java

    Bonjour,

    pourrais-tu placer ton code entre des balises [ code] et [/code] pour le rendre un peu plus lisible stp. L'accompagner d'une description de ce qui ne vas pas est pas mal non plus ...

  3. #3
    yoda1234

    Re : Problème Java

    Citation Envoyé par photon57 Voir le message
    Bonjour,

    pourrais-tu placer ton code entre des balises [ code] et [/code] pour le rendre un peu plus lisible stp.
    Je l'ai fait.
    Là où l'ignorance est un bienfait, c'est de la folie d'être sage (Thomas Gray).

  4. #4
    invitee32ad308

    Re : Problème Java

    Classe application :

    -Aucune fautes détectées dans mon programme(ni dans la classe application, ni dans la classe Lib)
    - la partie Lire un nombre entier nbr compris entre 10001 et 99999 avec le chiffre des unités différent de 0. Une lecture doit être redemandée si l’utilisateur entre une autre valeur ====> OKAY
    -Classe Lib c'est à dire 2ème [] : j'aimerais savoir si c'est ok même si aucune fautes détectée
    - Dans la 1ere [] : il s'agit de la partie où je n'arrive à faire tourner le programme

    [somme = Lib1.sommeChiffres( nombre);

    symetrique = Lib1.symetrique( nombre);

    message = "La somme des chiffres de" + nombre + "est égale à" + somme + ""
    + "\n Le symétrique de" + nombre + "est" + symetrique;]



    [import javax.swing.JOptionPane;
    public class Java31 {

    public static void main(String args[])
    {
    String str,str1,message=null;
    int nombre=0,a,b,c,d,e=0,somme,sym etrique;
    //Demander à l'utilisateur d'entrer une valeur entière comprise
    //entre 10001 et 999999
    if(e==0)
    do{
    str=JOptionPane.showInputDialo g("Entrez nbr (10001 et 99999)");
    //Convertir le texte en valeur numérique entière
    nombre= Integer.parseInt(str);

    }
    while( nombre< 10001 || nombre >999999 );

    a= nombre/10000;
    nombre = nombre%10000;
    b= nombre/1000;
    nombre= nombre%1000;
    c=nombre/100;
    nombre=nombre%100;
    d=nombre/10;
    e=nombre%10;


    somme = Lib1.sommeChiffres( nombre);

    symetrique = Lib1.symetrique( nombre);

    message = "La somme des chiffres de" + nombre + "est égale à" + somme + ""
    + "\n Le symétrique de" + nombre + "est" + symetrique;


    JOptionPane.showMessageDialog(
    null,
    message,
    "Laboratoire 1",
    JOptionPane.INFORMATION_MESSAG E
    );
    System.exit(0);
    }} ]

    Ma classe Lib :

    public class Lib1 {

    static int sommeChiffres(int chiffre)
    {
    int a , reste;

    a=0;
    reste=0;
    do{
    a=chiffre%10;
    reste = reste + a ;
    chiffre =chiffre/10;
    }
    while(chiffre!=0);
    return chiffre;
    }



    static int symetrique( int nombre1)

    {

    int a,b,c,d,e,nombre=0;
    a= nombre/10000;
    nombre = nombre%10000;
    b= nombre/1000;
    nombre= nombre%1000;
    c=nombre/100;
    nombre=nombre%100;
    d=nombre/10;
    e=nombre%10;

    nombre1 = a+b+c+d+e;
    return nombre1;
    }

  5. A voir en vidéo sur Futura
  6. #5
    bzh_nicolas

    Re : Problème Java

    Est-il obligatoire pour ton exercice ( ) de convertir en nombre ?
    Car ce serait beaucoup plus simple de rester en string et de ne convertir que quand c'est absolument nécessaire (notamment dans symetrique ou tu n'as pas besoin de convertir en chiffre pour faire ce qui est demandé. Mais ça fonctionne quand même.
    Pour sommeChiffres : vérifie ce que tu retournes.

    P.S. tu vérifie bien que ton chiffre est compris dans les bornes mais tu ne vérifie pas si le chiffre des unités est différent de 0.

  7. #6
    invite4492c379

    Re : Problème Java

    Quelques idées en vrac :

    Citation Envoyé par coco55 Voir le message
    Code:
    import javax.swing.JOptionPane;
    public class Java31 {
    
       public static void main(String args[])
        {
       String str,str1,message=null;
       int nombre=0,a,b,c,d,e=0,somme,symetrique;
       //Demander à l'utilisateur d'entrer une valeur entière comprise
       //entre 10001 et 999999
    if(e==0)
       do{
           str=JOptionPane.showInputDialog("Entrez nbr (10001 et 99999)");
           //Convertir le texte en valeur numérique entière
           nombre= Integer.parseInt(str);
    
       }
       while( nombre< 10001 || nombre >999999 );
    Je ne comprends pas le if(e==0) ???? Pour vérifier que le chiffre des unités est différent de 0 il faut mettre cette condition dans la conditionnelle du while. Le dernier chiffre s'obtient par un % 10. Je t'incite fortement à bien parenthéser tes conditionnelles aussi, sans essayer de faire de l'optimisation tout de suite.

    soit quelquechose du genre : while ( (nombre <10001)) || (nombre>999999) || (nombre %10==0) )


    Citation Envoyé par coco55 Voir le message
    Code:
    a= nombre/10000;
    nombre = nombre%10000;
    b= nombre/1000;
    nombre= nombre%1000;
    c=nombre/100;
    nombre=nombre%100;
    d=nombre/10;
    e=nombre%10;
    Quel est le but de ce morceau ? Attention ... tu modifies nombre ... nombre ne vaut plus ce que le user a tapé.

    Citation Envoyé par coco55 Voir le message
    Code:
      somme = Lib1.sommeChiffres( nombre);
    
      symetrique = Lib1.symetrique( nombre);
    ... que peux-tu dire ici en considérant mes remarques précédentes ?

    Citation Envoyé par coco55 Voir le message
    Code:
      message = "La somme des chiffres de" + nombre + "est égale à" + somme + ""
              + "\n Le symétrique de" + nombre + "est" + symetrique;
       
    
    JOptionPane.showMessageDialog(
            null,
            message,
            "Laboratoire 1",
            JOptionPane.INFORMATION_MESSAGE
            );
    System.exit(0);
    }}
    
    Ma classe Lib : 
    
    public class Lib1 {
    
        static int sommeChiffres(int chiffre)
        {
        int a , reste;
    
        a=0;
        reste=0;
        do{
            a=chiffre;
            reste = reste + a ;
            chiffre =chiffre/10;
        }
       while(chiffre!=0);
        return chiffre;
        }
    Tu calcules la somme des chiffres dans reste et tu renvoies .....

    Citation Envoyé par coco55 Voir le message
    Code:
    static int symetrique( int nombre1)
    
        {
    
        int a,b,c,d,e,nombre=0;
    a= nombre/10000;
    nombre = nombre000;
    b= nombre/1000;
    nombre= nombre00;
    c=nombre/100;
    nombre=nombre0;
    d=nombre/10;
    e=nombre;
    
    nombre1 = a+b+c+d+e;
    return nombre1;
    }
    Tu décomposes un nombre en ses chiffres puis tu les additionnes simplement ... je ne crois pas que c'est ce que tu désires faire. Peux-tu me proposer une méthode écrite en français pour faire ça ?

  8. #7
    invitee32ad308

    Re : Problème Java

    Oui, je vais mettre la condition différent de 0 dans le while , c'est beaucoup plus simple => Bien vu Ce que j'ai donc fait après ne sert plus à rien si je mets la condition dans le while

    Effectivement, c'est le reste que je dois retourner

    Pour le symétrique , ce n'est pas la somme des chiffres c'est si j'ai par ex : Le symétrique de 18481 est 18481 c'est mettre les chiffres à l'envers, c'est ça que je cherche

  9. #8
    invite4492c379

    Re : Problème Java

    Ce que j'indique est que tu ne calcules pas le «retourné» du nombre mais juste la somme des chiffres du nombres. Peux me dire comment tu fais à la main, histoire de faire pareil en java ...

  10. #9
    invitee32ad308

    Re : Problème Java

    J'ai encore une petite question, savez-vous comment faire pour dans cet ex , appeler la méthode statique Lib.isPalindrome(nbr) qui doit retourner vrai ou faux suivant la valeur du nombre nbr. Il doit retourner vrai si le nbr est palindrome et faux autrement par exemple 18481 est en palindrome car qu'on le lise de gauche à droite ou de droite à gauche le chiffre reste le même. Je pense qu'il faut utliser un booleen.
    Encore merci au pro de java

  11. #10
    invitee32ad308

    Re : Problème Java

    Pour le symétrique, ce que j'ai voulu essayer de faire c'est avec les modulo etc
    Par ex que pour le nombre 18481 que a = 1 , b =8, c=4, d=8, e=1 et ensuite avec ça faire afficher dans la fenêtre finale edcba en chiffre 18481

  12. #11
    invite4492c379

    Re : Problème Java

    Un palindrome n'est pas forcément le bon exemple, mais comment fais-tu pour partir de 12345 et arriver à 54321 ?

  13. #12
    invite4492c379

    Re : Problème Java

    Citation Envoyé par coco55 Voir le message
    J'ai encore une petite question, savez-vous comment faire pour dans cet ex , appeler la méthode statique Lib.isPalindrome(nbr) qui doit retourner vrai ou faux suivant la valeur du nombre nbr. Il doit retourner vrai si le nbr est palindrome et faux autrement par exemple 18481 est en palindrome car qu'on le lise de gauche à droite ou de droite à gauche le chiffre reste le même. Je pense qu'il faut utliser un booleen.
    Encore merci au pro de java
    Sais-tu le faire en java avec une chaine de caractère ?

  14. #13
    invitee32ad308

    Re : Problème Java

    comment fais-tu pour partir de 12345 et arriver à 54321 ?
    Justement je voulais faire
    a= nombre/10000;
    nombre = nombre%10000;
    b= nombre/1000;
    nombre= nombre%1000;
    c=nombre/100;
    nombre=nombre%100;
    d=nombre/10;
    e=nombre%10;
    Comme ça j'ai la valeur de chiffre puis je voulais les renverser mais je ne sais pas comment faire

  15. #14
    invite4492c379

    Re : Problème Java

    Citation Envoyé par coco55 Voir le message
    comment fais-tu pour partir de 12345 et arriver à 54321 ?
    Justement je voulais faire
    a= nombre/10000;
    nombre = nombre000;
    b= nombre/1000;
    nombre= nombre00;
    c=nombre/100;
    nombre=nombre0;
    d=nombre/10;
    e=nombre;
    Comme ça j'ai la valeur de chiffre puis je voulais les renverser mais je ne sais pas comment faire
    Quand tu as les chiffres a,b,c,d,e d'un nombre que tu écris [abcde] cela signifie que le nombre vaut 10000*a+1000*b+100*c+10*d+e. Donc pour «calculer» [edcba] tu fais ...
    Ça c'est la méthode calcul ... après on essaiera la version «écrite»

  16. #15
    invitee32ad308

    Re : Problème Java

    J'ai fait ça ,

    static int symetrique( int nombre1)

    {

    int a,b,c,d,e,nombre=0;
    a= nombre/10000;
    nombre = nombre000;
    b= nombre/1000;
    nombre= nombre00;
    c=nombre/100;
    nombre=nombre0;
    d=nombre/10;
    e=nombre;

    nombre1= (10000*e+1000*d+100*c+10*b+a) ;
    return nombre1;

    Mais cela ne fonctionne pas :/

  17. #16
    invite4492c379

    Re : Problème Java

    normal

    Le nom du paramètre est nombre1, donc il ne faut pas utiliser nombre mais nombre1 ...

  18. #17
    invitee32ad308

    Re : Problème Java

    Voilà ce que j'ai mais la partie symetrique ne marche

    [import javax.swing.JOptionPane;
    public class Java31 {

    public static void main(String args[])
    {
    String str,str1,message=null;
    int nombre=0,a,b,c,d,e=0,somme,sym etrique,palindrome;
    //Demander à l'utilisateur d'entrer une valeur entière comprise
    //entre 10001 et 999999

    do{
    str=JOptionPane.showInputDialo g("Entrez nbr (10001 et 99999)");
    //Convertir le texte en valeur numérique entière
    nombre= Integer.parseInt(str);

    }
    while( (nombre< 10001) || (nombre >999999) || (nombre %10==0));



    somme = Lib1.sommeChiffres( nombre);

    symetrique = Lib1.symetrique( nombre);



    message = "La somme des chiffres de" + nombre + "est égale à" + somme + ""
    + "\n Le symétrique de" + nombre + "est" + symetrique ;


    JOptionPane.showMessageDialog(
    null,
    message,
    "Laboratoire 1",
    JOptionPane.INFORMATION_MESSAG E
    );
    System.exit(0);
    }}]

  19. #18
    invite4492c379

    Re : Problème Java

    Ne marche pas ? càd ? Ne donne pas le bon résultat ?

  20. #19
    invitee32ad308

    Re : Problème Java

    Bien vu, on fait vite des bêtes fautes pour le palindrome
    voilà quelque chose d'intéressant, seulement moi ce que je veux faire c'est faire une classe Lib
    // Vérifier si le nombre est un palindrome (xyzyx)
    if(nombre / 10000 == nombre % 10 && nombre / 1000 % 10 == nombre / 10 % 10)
    // Afficher que le nombre est un palindrome.
    JOptionPane.showMessageDialog( null, nombre + " est un palindrome.", "Palindrome",
    JOptionPane.INFORMATION_MESSAG E);
    else
    // Afficher que le nombre n'est pas un palindrome.
    JOptionPane.showMessageDialog( null, nombre + " n'est pas un palindrome.", "Palindrome",
    JOptionPane.INFORMATION_MESSAG E);

  21. #20
    invite4492c379

    Re : Problème Java

    Oui l'idée est là. Si on reprend ta notation
    a=nombre/10000
    ...
    e=nombre %10

    tu testes simplement si (a==e) && (b==d)

    ------

    Tu as fait tout ça en manipulant des nombres ... ça peut vite devenir lourd. Sais-tu comment manipuler des string ?

  22. #21
    invitee32ad308

    Re : Problème Java

    Je pense faire

    public boolean isPalindrome (int nombre) {
    boolean isPalindrome = false ;
    if(nombre/10000==nombre%10 && nombre/1000 %10 == nombre /10 %10) {
    isPalindrome = true;
    }

    Est-ce bon ?

  23. #22
    invite4492c379

    Re : Problème Java

    çá doit le faire ... essaye cette version.

    Ce que je peux avant tout te recommander est de commencer à écrire ce que tu veux faire, le tester rapidement puis l'implémenter.

  24. #23
    invitee32ad308

    Re : Problème Java

    Pas de fautes dans le classe Lib, seulement que dois-je mettre dans la classe application

    palindrome =Lib1.inPalindrome(nombre);

    Comment exprimer ça pour que dans ma fenêtre finale soit écrit par ex La valeur 18481 est un nombre palindrome ?

  25. #24
    invite4492c379

    Re : Problème Java

    OK,

    ta fonction renvoie un booléen, donc soit faux soit vrai. Il faut tester la valeur de retour et suivant cette valeur construire un message différent
    un truc du genre :

    Code:
    if (Lib.IsPalindrome(nombre))
         message = nombre + " est un palindrome";
    else
         message = nombre + " n'est pas un palindrome";  
    
    et ensuite faire afficher ce message.

  26. #25
    invitee32ad308

    Re : Problème Java

    J'ai bien compris Merci mais pourquoi lorsque j'écris if (Lib.IsPalindrome(nombre)) il me met non-static method is Palindrome(int)cannot be referenced from a static context

  27. #26
    invite4492c379

    Re : Problème Java

    Il faut déclarer la fonction static ...

  28. #27
    invitee32ad308

    Re : Problème Java

    Quand j'écris Lib1.isPalindrome (nombre); ça ne marche pas car c'est une fct non static

  29. #28
    invite4492c379

    Re : Problème Java

    Une méthode statique est une méthode qui peut être appelée même sans avoir instancié la classe. Une méthode statique ne peut accéder qu'à des attributs et méthodes statiques. Il faut que dans Lib1 tu déclare ta fonction isPalindrome statique. Qqch du genre

    static bool IsPalindrome(int nombre)

  30. #29
    invitee32ad308

    Re : Problème Java

    Merci j'ai trouvé

  31. #30
    invitee32ad308

    Re : Problème Java

    Je viens de tester et lorsque je rentre comme valeur 18481 il m'écrit que ce n'est pas un palindrome-->ce qui n'est pas juste alors que pour 64235 il m'écrit que ce n'est pas un palindrome et c'est juste

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. Probleme java
    Par BIGFOOT176 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 09/11/2009, 17h36
  2. Problème boucle while en java
    Par thundertom dans le forum Logiciel - Software - Open Source
    Réponses: 8
    Dernier message: 23/10/2009, 16h56
  3. probléme Java et IE7 ?
    Par mistigri78 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 13/06/2009, 11h23
  4. SOS probleme en java
    Par invite9660f2d2 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 12/12/2007, 21h35
  5. Probleme Java/frontpage/I.E
    Par weeman dans le forum Internet - Réseau - Sécurité générale
    Réponses: 8
    Dernier message: 16/04/2005, 10h32