Eclipse pb avec for et completion de code.

Résolu
EminoMeneko Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   -  
 Profil bloqué -
Bonjour,

essayant de dépoussiérer Java j'ai installé Eclipse et je suis les tutos du Site du Zero.
Pour mettre en application le tuto (bien que vieux à mon niveau c'est tout facile) je suis en cours de réalisation du TP1.
Je voulais compiler pour voir ce que ça donne dans cette étape intermédiaire mais pour une raison étrange Eclipse m'ennuie avec une boucle for que voici :
   for (nDebut ; nDebut < nFin ; nDebut+nPas)   
   {   
    System.out.println("| "+nDebut+" | "+((9/5)*nDebut+32)+" |");   
    System.out.println("+-----------+-----------+");   
   }   


Que je sache ma syntaxe est juste, non ?
Un for c'est bien for (int initialisation ; boolean condition ; int incrémentation), non ?
Où est le problème ?
Aussi je trouve que la complétion de code ne marche pas bien.
Quand je fait ctrl+espace et bien il m'ouvre la liste avec pour seule option "No default Proposals"... Bref la complétion de code sous Eclipse j'ai connu bien mieux.
Est-ce que c'est lié au fait que j'utilise la version 64 bits ? Ça ne devrait pas poser problème pourtant mais c'est peut-être un bogue connu de la version 64 bits, qui sait.

J'ai fini ce TP hormis l'alignement des valeurs dans le tableau (étape suivante) et ce problème avec la boucle for.
Pas besoin de soluce, c'est pas le problème et de toute façon je vérifierais avec le code de correction du site quand j'aurais fini ma version.
Ce qui m'intéresse c'est le problème avec for et la complétion de code.

Merci d'avance à ceux qui m'aideront. :)

A voir également:

4 réponses

DasSium95 Messages postés 673 Date d'inscription   Statut Membre Dernière intervention   135
 
Est-ce que tu a bien défini le type de ta variable nDebut?
Est-ce que nFin e une valeur précise?

Je serais toi je mettrais un System.out.println("test for") pour voir si tu rentre dans ta boucle.

Peux-tu mettre l'erreur exacte s'il te plaît.
0
DasSium95 Messages postés 673 Date d'inscription   Statut Membre Dernière intervention   135
 
J'ai oublié quelle est la valeur de nPAs??
0
Profil bloqué
 
System.out.println("| "+nDebut+" | "+((9/5)*nDebut+32)+" |");


Ca n'est pas une bonne syntaxe
0
DasSium95 Messages postés 673 Date d'inscription   Statut Membre Dernière intervention   135
 
oulaa oui je n'avais pas vu. Ile ne faut pas de parenthèse. met ce calcul dans une autre variable
0
EminoMeneko Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   318
 
Vous avez tout faux ! le problème ne vient pas de là.
En fait j'ai posé la question ailleurs et j'ai eu une réponse il y a quelques jours de cela. J'avais carrément oublié que je l'avais posé ici. Alors c'est simple la boucle for l'astuce était de remplacer par la ligne suivante.

for (int i = nDebut ; i < nFin ; i+= nPas)


Avec ça il faut modifier nDebut par i dans les accolades qui délimitent la boucle.
Le code marche à merveille.
Il n'y a rien de choquant dans ma syntaxe du sysout. Tout est correcte une fois ces petits changements réalisés.

Merci quand même d'avoir essayé de m'aider. :)

J'espère maintenant que quelqu'un pourra me donner des explications à mon problème de complétion de code vide.
0
DasSium95 Messages postés 673 Date d'inscription   Statut Membre Dernière intervention   135
 
carrément que si ta syntaxe était chocante. ton fort ne voulais rien dir
0
EminoMeneko Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   318
 
C'est ton com qui veut rien dire !
0
DasSium95 Messages postés 673 Date d'inscription   Statut Membre Dernière intervention   135
 
Mec c'est pas grave tu nous a mal expliqué et puis c'est tout
0
Profil bloqué
 
Vous avez tout faux sur la syntaxe de :
System.out.println("| "+nDebut+" | "+((9/5)*nDebut+32)+" |"); 


???

La syntaxe est degeulasse meme si ca marche
ce n'est pas a faire.

Dans les bonne pratiques java :

la concaténation de chaine de caractère doit se faire grâce a un objet StringBuilder et non grace a des +++

de plus les variables doivent être externalisées dans les fonctions.

Integer result = (9/5) * ndebut + 32;

StringBuilder sb = new StringBuilder();
sb.append("| ");
sb.append(nDebut);
sb.append(" | ");
sb.append(result);
sb.append(" |");

System.out.println(sb.toString());


Voilà du Java optimisé
0
EminoMeneko Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   318
 
Je connaissais pas stringbuilder. Nos profs se sont bien passés de nous l'apprendre.
Ça optimise en quoi ?
0
Profil bloqué
 
0
EminoMeneko Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   318
 
Merci, j'ai lu un petit peu en me concentrant sur ce qui se rapproche de la question mais y' pas grande explications. Je ne fais pas de programmes pour des systèmes distribués ou apparentés juste un peu de code pour me remettre dans le bain. La différence entre stringbuilder et les plus à mon niveau je ne pense pas la voir. Après c'est toujours bon a prendre les bonne pratiques mais dans le cadre de TP que je fais personnellement je n'ai aucune obligation sur les performances donc pas de quoi chipoter là dessus.
Merci quand même pour le lien.
0
Profil bloqué
 
C'est vrai qu'au niveau de petites applications, on ne voit pas la différence.
Mais moi je pense que ces pratiques et d'autres encore sont a généraliser dans tout les cas.
Ca devient ainsi un automatisme de codage qui ne coute pas beaucoup de temps de codage supplémentaire. pour moi c'est aussi utile que de bien commenter son code etc..
Surtout si le but à terme est de programmer dans un environnement professionnel. A long terme ces pratiques réduisent énormément les couts d'évolution(montée en charge, ajout d'interfacage avec des appli tierce...) et les couts de mantien de l'appli.
Toutes appli est amenée à grossir avec le temps.

Imagine tu lance un site tout simple coder sans trop se préoccuper des perf et que par la suite il rencontre un gros succès. A ce niveau toutes les petites pertes de mémoires et de temps de réponses se cumulent proportionnellement au nombres de connectés. Avec le web 2.0 et les technologies comme l'Ajax, l'utilisation des sites à bien changé ses temps ci. les utilisateurs ont accès a des sites très dynamiques avec beaucoup de fonctionnalité. Les gens naviguent aussi très rapidement et passe les pages directement pour allé aux informations qu'ils souhaitent. surtout sur les sites qu'ils connaissent. Les serveurs peuvent recevoir des milliers de requête par seconde et doivent répondre en temps quasi réel au requêtes des utilisateurs.

Une appli qui n'a pas pris en compte des le départ les bonnes pratiques en terme de codage va être vite surpassée. Il va valoir reprendre tout le code en entier a rechercher les causes de pertes. changer le code dans de nombreuses classes, refaire des tonnes de tests et sortir une nouvelle version. Si cela ne necessite pas une refonte de l'architecture. Ce qui represente un cout enorme et beaucoup de temps perdu.
0
scriptiz Messages postés 1424 Date d'inscription   Statut Membre Dernière intervention   425
 
Ca te fait gagner un tic processeur, soit 1/100000 de seconde :D

Non je rigole, mais pour le problème initial, le nDebut n'est pas initialisé ni déclaré.

for(int i = 0; i < nFin; i++)
{
     // ...
}
0
EminoMeneko Messages postés 2435 Date d'inscription   Statut Membre Dernière intervention   318
 
Si si il l'est mais je n'ai publié que la partie avec le for donc on ne le voit pas ici. De toute façon le problème est pas là et pour rappel il n'y a plus de problème tout du moins plus au niveau du code. La seule chose qui reste a régler c'est la complétion de code qui marche toujours pas. J'ai aussi une version 32bits sur un autre PC et là la complétion de code marche bien. C'est peut-être comme j'ai pensé un problème connu avec la version 64 bits mais ça m'étonne quand même vu que c'est une fonctionnalité "de base" d'Eclipse.
0