programe sans réponse

programe sans réponse - Java - Programmation

Marsh Posté le 31-08-2005 à 18:12:35    

Bonjour,
 
J'ai un programe qui reste sans réponse quand 3 boucles imbriquées se terminent.Plus aucun controle ne répond.
Connaissez vous une solution pour résoudre se probleme?
 
Merci.

Reply

Marsh Posté le 31-08-2005 à 18:12:35   

Reply

Marsh Posté le 31-08-2005 à 18:36:40    

peut etre que si tu postais ton code, ça aiderait ? parce que personne ici n'est devin hein :sarcastic:


Message édité par Harkonnen le 31-08-2005 à 18:36:53
Reply

Marsh Posté le 31-08-2005 à 19:58:10    

Si moi:
 
Le probleme est a la ligne 456.
 
Je t'en prie

Reply

Marsh Posté le 31-08-2005 à 20:51:14    

Harkonnen a écrit :

peut etre que si tu postais ton code, ça aiderait ? parce que personne ici n'est devin hein :sarcastic:


Voila le code ou il semble avoir le probleme:

Citation :

for (int  retur13 = 1; retur13 < 71; retur13 ++){
    for (int  retur12 = 0; retur12 < 70; retur12 ++){
      for (int  retur14 = 0; retur14 < 10; retur14 ++){
       textField1.setText(""+table.getValueAt(retur12,retur14));
        String f = textField1.getText();
        String g = "-" + retur13 + "-";
        int location = f.indexOf(g);
        textField1.select(location,location + g.length());
        if(textField1.getSelectedText().equals(g)){
textArea1.append(retur13+": " +retur14+";"+retur12+ "\n" );}
 
    }}}

Reply

Marsh Posté le 31-08-2005 à 20:54:17    

les boucles s'achevent jusqu'au bout bout mais ensuite l'application ne répond plus et je suis obligé de faire un petit ctrl/alt + suppr pour le fermer.

Reply

Marsh Posté le 31-08-2005 à 23:25:20    

[:ciler]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 01-09-2005 à 10:15:02    

A tout hasard, tu ne crées pas un Thread avec une boucle "while(true)" ou qui ne finit jamais dedans ?
Ou bien une interface graphique ( fenêtre ), et pour laquelle - quand tu la ferme - tu n'appelles pas un System.exit(0) mais un truc du genre this.dispose() ?
Cela expliquerait ton problème.
Il nous en faut un peu plus comprendre, tes boucles ont l'air correct.
 

Reply

Marsh Posté le 01-09-2005 à 18:40:46    

Non j'utilise pas de thread avec une boucle while et j'appelle bien un System.exit(0) pour fermer la fenetre,par contre si je passe la valeur retur13 < 71 à retur13 < 10 le programe ne plante plus.Je pensais à un probléme venant de la mémoire mais j'en suis pas certain.
 
Une fois que les boucles sont terminées ,ce que j'arrive a visualiser plus aucun controle ne marche , comme si le programe était occupé, pourtant apres ce petit code il y a plus aucune tache à éxécuter.

Reply

Marsh Posté le 01-09-2005 à 18:58:18    

Wow, c'est une veritable boucherie ton code !
 
Quoi qu'il en soit, ton probleme ne vient pas de ce bout de paté, c'est une certitude.

Reply

Marsh Posté le 03-09-2005 à 23:59:12    

C'est juste une idée qui vaut ce qu'elle vaut...
Au total tu fais dans les 49000 itérations avec ces trois boucles for imbriquées.
Je ne sais pas trop combien de temps prend chacune d'elle ni sur quel processeur tu fais tourner ça, mais ça vient peut-etre juste du fait que c'est long... t'as qu'à faire un affichage comme ça

Code :
  1. for (int  retur13 = 1; retur13 < 71; retur13 ++){
  2.     /*******************************/
  3.     System.out.println("itération " + retur13);
  4.     /*******************************/
  5.     for (int  retur12 = 0; retur12 < 70; retur12 ++){
  6.       for (int  retur14 = 0; retur14 < 10; retur14 ++){
  7.        textField1.setText(""+table.getValueAt(retur12,retur14));
  8.         String f = textField1.getText();
  9.         String g = "-" + retur13 + "-";
  10.         int location = f.indexOf(g);
  11.         textField1.select(location,location + g.length());
  12.         if(textField1.getSelectedText().equals(g)){
  13. textArea1.append(retur13+": " +retur14+";"+retur12+ "\n" );}
  14.     }}}

 
Teste ça et tiens nous au courant. Tu peux aussi changer la place de l'affichage pour voir.
 
PS: si c'est complétement idiot ce que je dis, le martinet est sur l'étagère du haut.


Message édité par grimgroth le 03-09-2005 à 23:59:47
Reply

Sujets relatifs:

Leave a Replay

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