ccornaille Posté(e) le 15 octobre 2005 Partager Posté(e) le 15 octobre 2005 bon ben voila jai créer trois classe .tous m'a l'aire correcte mais je comprend pas pourquoi aucun polygone ne se dessine... public class point { int x; int y; public point(int xx, int yy) { x =xx; y =yy; } public int getX() { return x; } public void setX(int x) { this.x = x; } public int getY() { return y; } public void setY(int y) { this.y = y; } public void translater (int delta) {x+=delta; // x<=x+delta y+=delta; // y=y+delta aussi... } } import java.awt.Graphics; // public class polygone { point[] tab; int nPoints; // déclare une variable de type entier public polygone(point[]t,int n){ tab=t; nPoints=n; } public int getNpoints(){//pour acceder a npoint return nPoints; //inutile car public } public point[] gettab(){ return tab; } public void afficher(Graphics g){ int[] abs; int[] ord; abs=new int[nPoints]; ord=new int[nPoints]; for(int i=0; i< nPoints; i++){ abs[i]=tab[i].getX(); ord[i]=tab[i].getY(); } g.drawPolygon(abs,ord,nPoints);//api qui dessine le poly } public void translater (int delta){ for(int i=1; i<=nPoints;i++ ){ tab[i].translater (delta); } } } import java.applet.*; import java.awt.*; public class essais extends Applet{ //déclarations des objets point p1,p2,p3,p4; polygone poly1; point[] t1; //initialisation de l'applet: public void init() {p1=new point(50,100); p2=new point(100,30); p3=new point(250,250); p4=new point(300,320); //.... t1=new point[4]; t1[0]=p1; t1[1]=p2; t1[2]=p3; t1[3]=p4; //... poly1=new polygone(t1,4); setBackground(Color.white); } //tracé public void point(Graphics g) {g.setColor(Color.black); for (int i=1;i<3;i++) {poly1.translater(10+i); poly1.afficher(g); } } } soyez indulgent ....1er DM d'info.... Lien vers le commentaire Partager sur d’autres sites More sharing options...
ccornaille Posté(e) le 15 octobre 2005 Auteur Partager Posté(e) le 15 octobre 2005 je vien de me rendre compte que mes getter et setter ne servent à rien car jai mis en public pS :eclipse ne me trouve aucune erreure ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 15 octobre 2005 Partager Posté(e) le 15 octobre 2005 Je n'ai pas analysé le code, mais au premier coup d'oeil, je pense que tu as fait une erreur de frappe dans la méthode : public void point(Graphics g) , qui devrait être : public void paint(Graphics g) Essaie avec ça et dis-nous si ça marche mieux :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
ccornaille Posté(e) le 16 octobre 2005 Auteur Partager Posté(e) le 16 octobre 2005 voila j'ai modifier voila ce qui apparait dans la console ==> java.lang.ArrayIndexOutOfBoundsException: 4 at polygone.translater(polygone.java:30) at essais.paint(essais.java:30) at sun.awt.RepaintArea.paint(Unknown Source) at sun.awt.windows.WComponentPeer.handleEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source) sinon rien à changer , la fenetre s'ouvre avec marqué appelet démaré , mais pas de polygoneà l'écran..... Lien vers le commentaire Partager sur d’autres sites More sharing options...
ccornaille Posté(e) le 16 octobre 2005 Auteur Partager Posté(e) le 16 octobre 2005 up au topic pleze !!! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 16 octobre 2005 Partager Posté(e) le 16 octobre 2005 Hé dis donc on n'est pas aux ordres hein Tout ça sent le devoir d'école à rendre d'urgence sans vouloir se casser le bol... Et puis apprends à faire une boucle sur un tableau sans en dépasser les bornes... dans ta fonction "translater" par exemple... Tout est indiqué dans l'erreur Java, jusqu'au numéro de la ligne où ça casse ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
fabien29200 Posté(e) le 17 octobre 2005 Partager Posté(e) le 17 octobre 2005 En Java les tableaux commencent à 0 ... Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 17 octobre 2005 Partager Posté(e) le 17 octobre 2005 Hey ccornaille tu ne crois pas que tu abuse un peu là ? Un up en moins de 30 secondes Pas plus d'un topic par jour s'il te plait J'espère que je n'aurais pas à le redire. Par ailleurs, poser une question sur un forum de dispense pas de continuer à chercher dans son coin sur des tutos, sites webs, sur IRC, d'autres forum, ou ... avec son cerveau (meilleur déguggeur au monde) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 17 octobre 2005 Partager Posté(e) le 17 octobre 2005 ...et de lire le message d'erreur du débugger Lien vers le commentaire Partager sur d’autres sites More sharing options...
ccornaille Posté(e) le 18 octobre 2005 Auteur Partager Posté(e) le 18 octobre 2005 dsl theocrite , promi je le ferais plus pour les autres soyez indulgents , sa fais 2 semaine que j'apprend le java.... c'est grave galere . je capte rien au message du debugger Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 18 octobre 2005 Partager Posté(e) le 18 octobre 2005 Ah ok lol. Bon j'explique : quand quelque chose ne va pas bien, Java produit une "exception". Il y a plein d'exceptions différentes, correspondant à plein de types de problèmes. Ce qui est bien, c'est que les exceptions portent généralement des noms très explicites, ce qui aide à trouver facilement la cause du problème. Dans ton cas, c'est une "ArrayIndexOutOfBoundsException", qui signifie donc, en anglais : "un problème lié à l'index d'un tableau, car l'index demandé est supérieur à ce que le tableau autorise". Dans ton cas, Java te donne même la valeur fautive : 4. Cela veut dire que tu as essayé d'accéder à la 5° case du tableau (index 4), alors que ton tableau ne comporte que 4 cases ou moins. D'où un petit problème... C'est une erreur classique : les index des tableaux commencent à 0, c'est-à-dire que la première case du tableau est numérotée "0". Donc, pour boucler sur toutes les cases d'un tableau de 10 éléments par exemple, il faudra faire une boucle allant de 0 à 9. Un moyen sûr d'éviter de genre d'ennuis est de ne pas coder le nombre d'itérations de la boucle en dur dans le code, mais plutôt de demander directement sa taille au tableau. Exemple : String[] tab = new String[10]; for (int i=0; i<tab.lentgh; i++) { // ...traitement... } Ainsi, si on change la taille du tableau pour une quelconque raison, le code de la boucle n'a pas besoin d'être retouché. Et on évite les "ArrayIndexOutOfBoundsException" par la même occasion. Bon, revenons au message d'erreur. Lorsqu'il produit une exception, Java indique la ligne où le problème a été rencontré, et l'historique des appels de fonctions qui a conduit à cette ligne (toutes les lignes d'erreur commençant par "at"). Le message d'erreur se lit de haut en bas. at polygone.translater(polygone.java:30) at essais.paint(essais.java:30) at sun.awt.RepaintArea.paint(Unknown Source) (... etc ...) Dans ton cas, la première ligne indique que l'erreur est dans ton fichier source "polygone.java", dans la fonction "translater", et plus exactement à la ligne 30. Les lignes suivantes signifient : cette fonction "translater" a été appelée depuis la ligne 30 de la fonction "paint" du fichier source "essais.java", qui elle-même a été appelée par ... etc ... Cela permet de connaître le chemin suivi par le programme lors de son exécution, qui conduit à cette fameuse erreur. Voilà pour les explications, ça va mieux maintenant ? :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
ccornaille Posté(e) le 19 octobre 2005 Auteur Partager Posté(e) le 19 octobre 2005 c'est tous simplement parfait !!!! c'est exactement le type de réponse que j'attendait sinon j'ai une autre petite question: int listeXp1[]={50,40,80,100,55}; es ce que tu peux me dire si c'est possible d'ajouté une certaine valeur(par exemple 10) à chaque index de mon tableau. pour arrivé a un nouveau talbeau ==> int listeXp2[]={60,50,90,110,65}; ???? Lien vers le commentaire Partager sur d’autres sites More sharing options...
mogwai93 Posté(e) le 19 octobre 2005 Partager Posté(e) le 19 octobre 2005 sinon j'ai une autre petite question: int listeXp1[]={50,40,80,100,55}; es ce que tu peux me dire si c'est possible d'ajouté une certaine valeur(par exemple 10) à chaque index de mon tableau. pour arrivé a un nouveau talbeau ==> int listeXp2[]={60,50,90,110,65}; ???? oui, tu peuxdans la limite du type du tableau (ici entier [int], donc tu as encore de la marge !!) pour rappel, int est codé sur 16 bits donc en fonction de s'il est signé ou non : (signed) int : de -32767 à 32767 unsigned int : de 0 à 65535 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 19 octobre 2005 Partager Posté(e) le 19 octobre 2005 Dommage, un int est sur 32 bits signés en java. Pour ajouter 10 à chaque élément du tableau, il suffit de boucler dessus, et d'incrémenter la valeur des éléments. Par exemple : for (int i = 0; i < listeXp1.length; i++) { listeXp1[i] += 10; } Lien vers le commentaire Partager sur d’autres sites More sharing options...
ccornaille Posté(e) le 19 octobre 2005 Auteur Partager Posté(e) le 19 octobre 2005 int listeXp5[]=listeXp1[]+10; int listeXp5[]=listeXp1[+10] bien évidement ce qui est ci dessus ne fonctionne pas, alors ==> Comment on fait ?? PS : merci sentinel ta eté trop rapide mais dans ton explication sa ne me créé pa un nouveau tableau avec mes nouvelle valeur... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sentinel Posté(e) le 19 octobre 2005 Partager Posté(e) le 19 octobre 2005 Ah pardon un nouveau tableau... Ben il suffit de créer ce nouveau tableau (en indiquant que sa taille est la même que le tableau source), puis de le remplir en bouclant sur les valeurs du tableau d'origine. // Création du nouveau tableau, de la même taille int[] tableau2 = new int[tableau1.length]; // Remplissage for (int i = 0; i < tableau1.length; i++) { tableau2[i] = tableau1[i] + 10; } Mais dis-moi c'est vraiment de la programmation de base ça, tu fais quoi dans la vie ? Etudiant ? A mon avis si tu veux apprendre à programmer, il ne faut pas commencer par Java... Acquiers les bases en Pascal par exemple, ou en PHP, et passe à Java après seulement... Lien vers le commentaire Partager sur d’autres sites More sharing options...
ccornaille Posté(e) le 19 octobre 2005 Auteur Partager Posté(e) le 19 octobre 2005 loool oui je suis étudiant , et si tu veux tous savoir on à fais que de l'uml pour le moment en cours et pour notre 1er DM on doit faire des applet et tous .... le truc trop logique....je suis un des seul de la promo a arrivé a avoir un truc qui s'affiche ici par exemple Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.