CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Java] Une fois son code fini...

Bunyan
Bunyan
Niveau 17
19 juin 2012 à 21:57:25

Tbop : "Justement Megatotor le debuguage a l'arrache en console au lieu de breakpoint bien senti c'est generalement le syndrome du newbie... Et d'ailleurs tu es peut-etre un newbie mais crois moi que tu te debrouilles deja pas mal et tu peux etre confiant pour la suite des aventures. "

Je confirme.
Si tu as juste compris la moitié, ou quelques notions, dans tout ce qui a été écrit et expliqué ici, tu peux être confiant pour le futur (mais ce n'est pas une raison pour se reposer sur ses lauriers :p).

Si tu as la possibilité, et aussi l'envie (et que ton projet n'est pas trop gros ... de l'ordre de 5K lignes de code max), tu peux mettre ton projet Eclipse en archive, je tenterai de te faire un retour dessus (je peux déjà dire "attention aux conventions Java", du peu que j'ai vu ;) )

Pseudo supprimé
Pseudo supprimé 20 juin 2012 à 10:40:08

Bunyan :d) Ouais volontiers, j'ai envie de progresser de tout de façon.

Par contre j'ai un problème, au même stade qu'hier, je veux lire ce que l'utilisateur a entré dans sa zone de réponse, or je viens de réaliser que les valeurs peuvent être à la fois des String, ou des integer :mort:

Donc tout ce matin je me suis creusé la tête, et j'ai cherché des moyens pour pouvoir vérifier quel type de donnée est rentré dans le JTextField pour ensuite pouvoir l'envoyer dans le programme.
Donc j'ai fais ce code ci :
https://image.noelshack.com/fichiers/2012/25/1340181160-Sanstitre.png

Pouvez vous me dire si vous voyez des choses qui cloches ou non ? Par ce lorsque dans Joueurs.java je veux appeler le getRepNum(), ça me met une erreur :(
"nbJoueurs = Fenetre.getRepNum();" erreur : methode is undefined for the type Fenetre. :-(

Je comprends pas trop si l'erreur viens dans Fenetre.java, ou dans Joueurs.java :doute:

Mais déjà dans un premier temps, pouvez vous me confirmer si le code pour vérifier le contenu du JTextField est bon ou non ? Je me suis un peu cassé la tête dessus ce matin, j'aimerai qu'on m'indique si c'est au moins juste ou non :hap:

tbop2
tbop2
Niveau 10
20 juin 2012 à 11:44:35

http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/Integer.html#parseInt(java.lang.String)

Look at Throws....

Pseudo supprimé
Pseudo supprimé 20 juin 2012 à 13:57:00

Merci de ta réponse tbop2, j'ai pu essayer d'appliquer la chose, peux tu me dire si mon code est correcte ?
https://image.noelshack.com/fichiers/2012/25/1340192935-Sanstitre.png

Sinon j'ai toujours cette erreur dans Joueurs.java, lorsque je mets :
public static int Nombre(){
Fenetre.textProg.append("Combien y a t-il de joueurs ? ");
nbJoueurs = :d) Fenetre.getRepNum() :g) ;

ça me met une erreur comme quoi il reconnait pas cette méthode :(
Je comprends pas, j'ai déjà utilisé les getXXX(); et j'ai jamais eu de réel soucis avec, mais celui là n'a pas l'air de vouloir passer...

Pseudo supprimé
Pseudo supprimé 20 juin 2012 à 14:42:43

Bon j'ai un peu avancé (enfin je sais pas trop, j'me sens plus dépassé qu'autre chose en fait là...).

Le programme ne fait pas la lecture de ce que l'utilisateur envoie via le bouton valider...ça commence à me gonfler un peu à vrai dire...je vous invite à regarder mon code :

Fenetre.java (le code que je vous montre c'est quand on clique sur le bouton Valider)

textRep = new JTextField (rep);//la zone de texte, avec rep pour valeur à l'intérieur
JButton buttonRep = new JButton ("Valider");//le bouton valider
buttonRep.addActionListener(new TraitementBut());//l'action quand on clique dessus

...

public class TraitementBut implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
rep = (String) textRep.getText();//rep prend la valeur contenue dans le JTextField textRep

try{
repNum = Integer.parseInt(rep);//repNum prend la valeur de rep
setRepNum();//on appelle RepNum()
getRepNum();//retourne la valeur de RepNum contenu dans RepNum()
}catch (NumberFormatException a){
setRepText();//Sinon, on appelle RepText()
getRepText();//retourne la valeur de rep contenu dans RepText()
}
}
}

public static int getRepNum(){//retourne valeur Int
return repNum;
}

public String getRepText(){//retourne valeur String
return rep;
}

public void setRepNum()//envoie reponse de valeur Int
{
textProg.append(repNum +"\n");
}

public void setRepText()//envoie reponse de valeur String
{
textProg.append(rep +"\n");
}

Maintenant Joueurs.java :

public static void Nombre(){
Fenetre.textProg.append("Combien y a t-il de joueurs ? ");
nbJoueurs = Fenetre.getRepNum();
Fenetre.textProg.append(nbJoueurs+"zrv");
while (2 > nbJoueurs || 6 < nbJoueurs){
Fenetre.textProg.append("Les joueurs doivent être compris entre 2 et 6, recommencez : ");
}
Fenetre.textProg.append("La partie va donc se jouer avec " +nbJoueurs+ " participants");

}

Quand je lance le programme, bah il y a une boucle infinie qui se passe, ça spam le message "Joueurs doivent être entre 2 et 6 blabla...", le fait est que nbJoueurs n'est même pas rempli par l'utilisateur, ça récupère rien dans le getRepNum()...ça commence par me rendre fou ce truc...

Bunyan
Bunyan
Niveau 17
20 juin 2012 à 15:18:22

Lis bien ta méthode "Nombre" (HS : en Java, les méthodes sont en lowerCamelCase, et les classes en UpperCamelCase) :)

Le "while" est le responsable de ta boucle infinie ;)
Tu n'en as normalement plus besoin, et doit utiliser un autre type de mécanisme pour dire "il y a assez de joueurs" :)

Pseudo supprimé
Pseudo supprimé 20 juin 2012 à 15:19:00

Désolé du triplepost, c'est pas cool :peur:

Juste pour dire que je viens de comprendre l'erreur, en effet ça ne récupère aucune valeur car le processus se déclenche avant que la valeur soit demandée, donc il faut que j'organise mieux mon code et que j'appelle les méthodes au bon moment.

Bon, je vais essayer d'y arriver, ça commence par me taper sur le système cette interface :pf:

Pseudo supprimé
Pseudo supprimé 20 juin 2012 à 15:57:06

Ouais bah en fait non je fail depuis tout à l'heure...
J'arrive pas à faire marcher mon idée, je sais pas comment on fait pour structurer le code de manière à ce que le programme se déroule entièrement sans encombre, j'ai jamais vu ça dans mes cours.
Je pige pas comment avec un seul bouton Valider, on peut appeler la valeur dans rentrée par l'utilisateur dans la méthode souhaité...

Je pensais pouvoir mettre dans ma méthode Nombre() ce genre d'instruction :
Fenetre.textProg.append("Combien y a t-il de joueurs ? ");
nbJoueurs = Fenetre.actionPerformed(ActionEvent e);

Ce qui se traduirait par nbJoueurs sera égal à ce que l'action du JButton donnera, mais visiblement ça passe pas...

Puis j'ai des problèmes avec les static :(
J'ai mit nbJoueurs en static vu que la valeur une fois rentrée ne bougera plus, mais ça cause des problèmes avec la méthode getRepNum(), eclipse veut aussi me le mettre en static, or la valeur RepNum ne doit pas être static sinon la prochaine fois qu'elle devra changer de valeur ça posera des problèmes...

ça me gave à fond cette histoire u_u
je piétine, enfin même pas, j'avance pas d'une ligne depuis plusieurs heures :mort:

tbop2
tbop2
Niveau 10
20 juin 2012 à 16:21:30

Bon.

Tu postes trop vite il faut que tu calm(es) down! :D

La plupart de tes questions sont du type : "est-ce que ca marche ?" "est-ce que c'est ce que je veux faire ?". La reponse est (au choix) :

1) Ben je sais pas... teste le on a pas le programme !
2) Je ne suis pas un compilateur...
3) Ni un debugueur...
4) Encore moins un breakpoint ! :P
5) Tu as regarde la doc au fait ?

Si tu vois ce que je veux dire :)

Donc moi je perds le fil, et le code moche pas sous pastebin aide pas. Voila ce qui devrait a mon avis regler ton probleme (et je suis gentil comme tu postes des screenshots j'ai du tout retaper a la main HUM HUM :) ) :
try {
...int parsedInt = Integer.parseInt(textRep.getText());
...textProg.append(parsedInt + "\n");
} catch (NumberFormatException exception) {
...textProg.append(textRep.getText() + "\n");

Sinon +1 Bunyan pour les conventions d'ecriture non respectees en Java et PIRE encore les noms de variables qui ne veulent rien dire du type Nombre (c'est une methode ? statique gne ????) et setRepNum (qui est cense dire ?) Et la classe "TraitementBrut", ca n'a aucun sens et en plus c'est en Francais. Je suis d'ailleurs etonne que tu aies eu besoin de faire une classe pour ca, normalement ton actionPerformed devrait etre directement override de la classe mere de memoire de Java (mais Java Netbeans....), pas besoin de s'embeter a faire des classes de partout pour le moindre bouton implemente en GUI.

Pseudo supprimé
Pseudo supprimé 20 juin 2012 à 16:28:05

Ouais désolé je suis à cran là, le fait de ne pas y arriver me gave :mort:

Je vais suivre vos derniers conseils et réordonner mon code, renommer les méthodes etc...

Désolé pour tout les messages en tout cas :mort:

Pseudo supprimé
Pseudo supprimé 21 juin 2012 à 09:25:34

Bonjour à tous :)

Bon j'ai retrouvé mon calme par rapport à hier, j'ai suivi vos conseils et j'ai supprimé les lignes useless de mon programme, en effet il y en avait pas mal !

Déjà première erreur j'avais mit plusieurs ActionPerformed, un pour chaque action, donc j'en avait 4 au total et je m'y perdais, maintenant j'en ai mit un seul qui regroupe 4 possibilités vu que j'ai 4 boutons avec action.

Et j'avais aussi des méthodes qui servaient à rien, et des données que j'avais oublié de supprimé.

Bref, maintenant mon code est bien plus propre qu'avant, bon il doit pas non plus être optimisé vu mon niveau, mais il est "propre", et ça grâce à vos conseils, merci :)

Si vous voulez voir mon code pour ma fenetre, vous pouvez le voir ici :
http://www.terafiles.net/v-141675.html

Par contre je n'ai pas avancé en ce qui concerne la récupération du texte validé par l'utilisateur.
J'ai voulu utiliser un getBlabla(), pour retourner la valeur dans ma méthode Nombre() qui se trouve dans Joueurs.java, mais il y a un problème au niveau des données.
Eclipse n'aime pas le fait que nbJoueurs soit en static, enfin j'ai l'impression que les données ne sont pas compatibles, pouvez vous m'éclairer ?

Voici le code pour Joueurs.java : http://www.terafiles.net/v-141677.html

J'ai mit les lignes concernés en commentaire, pour les repérer plus rapidement (à la pour Fenetre.java, et au début pour Joueurs.java).
J'espère que ce site marche bien, j'héberge rarement des fichiers...

tbop2
tbop2
Niveau 10
21 juin 2012 à 11:33:38

Salut, utilise pastebin pour le code. Personne ne va s'embeter a telecharger un code c'est pas tres pratique, et puis avec pastebin tu peux aussi avoir un semblant de "versioning" car les gens peuvent soumettre leurs idees d'ameliorations/corrections.

Concernant cette satannee saisie pourquoi n'as tu tout simplement pas essaye la solution que je t'ai donnee hier ? :)

Bunyan
Bunyan
Niveau 17
21 juin 2012 à 11:37:42

Impossible de télécharger non plus sur cette hébergeur ("fichier non trouvé").
Fais un c/c de ton code sur Pastebin plutôt, comme le suggère tbop2 :)

Pseudo supprimé
Pseudo supprimé 21 juin 2012 à 14:14:11

Bon j'espère que les liens sont bons :
http://pastebin.com/W35eNHxw

http://pastebin.com/K6TKGy89

tbop2 :d) Non je parle pas du même problème, tes lignes me sont très utiles justement.

Vous verrez j'ai mit les commentaires à certains endroits, c'est en bas de la page pour Fenetre.java, et au début pour Joueurs.java.

Bunyan
Bunyan
Niveau 17
21 juin 2012 à 14:56:17

En draft :
http://pastebin.com/mL57QWzN
http://pastebin.com/index/K6TKGy89

tbop2
tbop2
Niveau 10
21 juin 2012 à 14:58:10

Quelle est la portee d'une variable statique ?
Quelle est la portee d'une variable non-statique ?

Bunyan
Bunyan
Niveau 17
21 juin 2012 à 15:07:59

Et oui, renseigne toi sur ce qu'est l'erreur "can't use a non-static method|variable|constant|... in a static context", au lieu de simplement mettre en static pour l'enlever :p

Pseudo supprimé
Pseudo supprimé 21 juin 2012 à 15:25:09

Je sais qu'on utilise static pour attribuer une valeur à une donnée, pour ensuite ne plus y toucher.
C'est ce que je veux faire avec nbJoueurs, rentrer la valeur une fois au début du programme, pour ensuite qu'elle ne bouge plus jusqu'à la fin.

Mais donc comme a l'air de dire Bunyan, ce ne serait pas "possible"...je vais me renseigner.

tbop2
tbop2
Niveau 10
21 juin 2012 à 15:29:11

Absolument pas ce n'est ni la definition ni l'utilite principale du keyword static :)

Bunyan
Bunyan
Niveau 17
21 juin 2012 à 15:30:06

Ce que tu veux faire s'obtient avec "final".

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment