[JAVA]Probleme affichage adresse memoire

Probleme affichage adresse memoire [JAVA] - Java - Programmation

Marsh Posté le 31-12-2009 à 04:42:12    

bonjour,  
j'ai fais un programme "Fonction" qui gère différentes fonctions en affichant leurs valeur, calculs de dérivée...
Pas d'erreurs a la compilation mais a l'execution quand j'affiche une derivee d'un polynome ou d;une autre fonction quelconque,j'ai des adresses memoires en resultat.
Les codes sont au dessosus:
 
class Polynome
 

Code :
  1. public class Polynome implements Fonction, Cinfini {
  2. private Monome [] poly;
  3. public Polynome(double x, double y){
  4.  double [] tab=new double[2];
  5.  tab[0]=x;
  6.  tab[1]=y;
  7. }
  8. public Polynome(Monome [] m){
  9.  poly=new Monome [m.length];
  10.  for(int i=0;i<m.length;i++){
  11.   poly[i]= new Monome(m[i].getexp(),m[i].getcoef());
  12.  }
  13. }
  14. public double valeur(double x) {
  15.  double r=0.0;
  16.  for(int i=0;i<this.poly.length;i++){
  17.   r+= poly[i].getcoef()+(x * poly[i].getexp());
  18.  }
  19.  return r;
  20. }
  21. public Polynome derivee() {
  22.  Monome n;
  23.  Monome [] m= new Monome[this.poly.length-1];
  24.  for(int i=1;i<poly.length;i++){
  25.   n= new Monome(this.poly[i].getexp()-1,this.poly[i].getcoef());
  26.   m[i-1]=n;
  27.  }
  28.  return new Polynome(m);
  29. }
  30. }


 
 
class Monome
 

Code :
  1. class Monome {
  2. private int coefficient;
  3. private int exposant;
  4. public Monome (int exposant,int coefficient)
  5. {
  6.  this.exposant = exposant;
  7.  this.coefficient = coefficient;
  8. }
  9. public String toString () {
  10.  return " "+ this.coefficient + " x^"+this.exposant;
  11. }
  12. public int getexp () {
  13.  return this.exposant;
  14. }
  15. public int getcoef () {
  16.  return this.coefficient;
  17. }
  18. }


 
class Test(main):
 

Code :
  1. public class Test {
  2. public static void main(String[] args) {
  3. double res1,res2;
  4. Monome []t1={new Monome(1,2), new Monome(1,1)};
  5. Monome []t2={new Monome(5,3), new Monome(2,0), new Monome(3,2)};
  6. Polynome p1=new Polynome(t1);
  7. Polynome p2=new Polynome(t2);
  8. res1=p1.valeur(2);
  9. res2=p2.valeur(5);
  10. System.out.println("La derivee du polynome p1 est:"+p1.derivee());
  11. System.out.println("La derivee du polynome p2 est:"+p2.derivee());
  12. System.out.println("res1="+res1);
  13. System.out.println("res2="+res2);
  14. }
  15. }


 
A l'affichage de p1 et de p2 j'ai des adresse memoires, est ce que quelqu'un saurait d'ou vient le probleme?
merci :jap:


---------------
http://forum.hardware.fr/hfr/Achat [...] 2243_1.htm
Reply

Marsh Posté le 31-12-2009 à 04:42:12   

Reply

Marsh Posté le 31-12-2009 à 13:38:08    

La méthode derivee() renvoie une instance de Polynome. Lorsque tu fais

Code :
  1. System.out.println("La derivee du polynome p1 est:"+p1.derivee());

, la méthode toString() de l'instance de Polynome renvoyée par p1.derivee() est appelée. La méthode toString() est définie dans la classe Object et non redéfinie dans la classe Polynome. C'est cette méthode qui renvoie ce que tu appelles l'"adresse mémoire" (mais ce n'est pas l'adresse mémoire, Cf. http://java.sun.com/j2se/1.4.2/doc [...] toString()).
 
Une solution serait de redéfinir la méthode toString() dans la classe Polynome afin qu'elle affiche la représentation d'un polynome telle que tu la souhaites.


Message édité par charly007 le 31-12-2009 à 13:49:25
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed