Bonjour
J'ai une erreur dont je n'ai pas pu comprendre la raison, j'ai re-vérifier les types des variables et c'est correcte, je ne comprend pas ou figure la fausse manipulation.
PropositionWorkflow.java
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 protected void executeHandleResponses() throws Exception { System.out.println("--------------Executing "+HANDLERESPONSES_ACTIVITY+"--------------"); ACLMessage msg = myAgent.blockingReceive(myTemplate, 10000); if (msg != null){ switch (msg.getPerformative()) { case ACLMessage.PROPOSE: String content = msg.getContent(); StringTokenizer st = new StringTokenizer(content, "#"); desiProd = st.nextToken(); prixvente = Double.parseDouble(msg.getContent()); quantite_disp = Integer.parseInt(st.nextToken()); mode_paiement = st.nextToken(); localite = st.nextToken(); System.out.println("Proposition reçu: produit: "+desiProd+" Prix unitaire de vente: "+prixvente+" quantite disponible: "+quantite_disp+" Mode paiement: "+mode_paiement+" localité: "+localite); if (quantite_disp > quantite){ if (bestProposal == null || prixvente < minPrice) { // Up to now this is the best offer. Store it minPrice = prixvente; bestProposal = msg; prix = prix - ((prix * margeNegoAch)/100); ACLMessage reply = msg.createReply(); /*reply.setPerformative(ACLMessage.PROPOSE); reply.setContent(String.valueOf(prix));*/ System.out.println("Meilleur prix de vente: "+minPrice); } } else{ } break; case ACLMessage.REFUSE: // The sender of this message is not selling the book. // Don't care break; case ACLMessage.NOT_UNDERSTOOD: // The sender of this message didn't understand the CFP. // Log a warning. System.out.println("-WARNING- "+ msg.getSender()+" did not understand the CFP message"); break; case ACLMessage.FAILURE: // If the sender is the AMS, one of the known sellers // is no longer active --> Remove it from the list of known // sellers if (msg.getSender().equals(myAgent.getAMS())) { try { AID oldSeller = AMSService.getFailedReceiver(myAgent, msg); sellers.removeElement(oldSeller); } catch (FIPAException fe) { // Should never happen fe.printStackTrace(); } } else { // An unexpected error happened somewhere. Log a warning System.out.println("Unexpected FAILURE message received"); } break; default: // Unexpected message. Log a warning System.out.println("Unexpected message received"); } repliesCnt++; } }erreur console:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 private void serveCFP(ACLMessage msg) { ACLMessage reply = msg.createReply(); // Get the title from the content String desiProduit = msg.getContent(); System.out.println("CFP. produit est "+desiProduit); try { statement = (PreparedStatement) connection.prepareStatement("select * from produit where designation = (?)"); statement.setString(1,desiProduit); rs=(ResultSet)statement.executeQuery(); rs.next(); int id_produit = rs.getInt(1); rs.close(); statement.close(); statement = (PreparedStatement) connection.prepareStatement("select * from negocier_vente where id_entreprise = (?) and id_produit = (?)"); statement.setInt(1,id_entrepriseV); statement.setInt(2, id_produit); rs=(ResultSet)statement.executeQuery(); if( rs.next()){ prix_depart_vente = rs.getDouble("prix_depart_vente"); prix_vente_min = rs.getDouble("prix_unit_min"); quantite_disponible = rs.getInt("quantite_produit"); qualite_produit = rs.getInt("qualite_produit"); localite = rs.getString("localite"); marge_negociation = rs.getDouble("marge_negociation_vente"); mode_vente = rs.getString("mode_vente"); if (quantite_disponible > 0){ System.out.println("Quantite disponible"); // proposer à l'acheteur le prix et la quantite disponible reply.setPerformative(ACLMessage.PROPOSE); reply.setContent(desiProduit+"#"+prix_depart_vente+"#"+quantite_disponible+"#"+mode_vente+"#"+localite); } else { reply.setPerformative(ACLMessage.REFUSE); reply.setContent("Stock épuisé"); } } else { System.out.println("Pas de resultaaaaaaaaaaaaaaaaatt"); reply.setPerformative(ACLMessage.INFORM); reply.setContent("Produit non disponible"); } rs.close(); statement.close(); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } myAgent.send(reply); } }
Quelqu'un pourra-t-il m'aider?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 --------------Executing HandleResponses-------------- CFP received from valeo@WADE CFP. produit est fromage Quantite disponible java.lang.NumberFormatException: For input string: "fromage#350.0#200#espece#tunis" at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source) at java.lang.Double.parseDouble(Unknown Source) at proposition.PropositionWorkflow.executeHandleResponses(PropositionWorkflow.java:175) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at com.tilab.wade.performer.MethodInvocator.invoke(MethodInvocator.java:84) at com.tilab.wade.performer.CodeExecutionBehaviour.action(CodeExecutionBehaviour.java:50) at jade.core.behaviours.Behaviour.actionWrapper(Behaviour.java:344) at jade.core.behaviours.CompositeBehaviour.action(CompositeBehaviour.java:109) at jade.core.behaviours.Behaviour.actionWrapper(Behaviour.java:344) at jade.core.behaviours.CompositeBehaviour.action(CompositeBehaviour.java:109) at jade.core.behaviours.Behaviour.actionWrapper(Behaviour.java:344) at jade.core.behaviours.ThreadedBehaviourFactory$ThreadedBehaviourWrapper.run(ThreadedBehaviourFactory.java:347) at java.lang.Thread.run(Unknown Source)
Merci
Partager