Salut a tous,
j'ai deux classes définis comme suit :
classe Rule a deux champs de type
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
.
.
.
Test m_test
Rule m_next
et la deuxième c'est Test ( un ensemble de condition pour la regle )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
Attribut m_attr ;
int   m_value;
Test m_next
donc une règle Rule a des testes de Type Test tel que chaque test a (attr = value) et m_next c'est le test suivant et le dernier test a comme m_next "null" ,
j'ai creer une méthode appelée Add1 qui va prendre en paramètre une règle de type Rule et qui va l'ajouter un test ( cette règle peut avoir plusieurs testes et je doit ajouter un a la fin ) voila mon code :
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
 
private List<PrismRule> Add1(PrismRule r, Instances data) throws Exception {
 
 
            PrismRule CR_rules = addRule(null , new PrismRule(data, 0)); 
 
 
            int cl=r.m_classification; // possible value of theClass
            Instances E, ruleE;
 
            Test test = null, oldTest = null;
            int bestCorrect, bestCovers, attUsed;
            Enumeration enumAtt;
            getCapabilities().testWithFail(data); // can classifier handle the data?
            data = new Instances(data);
            data.deleteWithMissingClass();// remove instances with missing class
            E = data; // initialize E to the instance set
            ruleE = E; // examples covered by this rule
            test = new Test(); 
            CR_rules.m_test=test;
 
          // for every attribute not mentioned in the rule
            enumAtt = ruleE.enumerateAttributes();
            while (enumAtt.hasMoreElements()) 
            {
 
                 Attribute attr = (Attribute) enumAtt.nextElement();
                 if (isMentionedIn(attr, r.m_test)) {continue;}
                 int M = attr.numValues();
                 for (int val = 0; val < M; val ++) // ... for each value of this attribute
                 {
                          PrismRule cr = addRule(null , new PrismRule(data, r.m_classification));
 
 
 
 
 
                         if (r.m_test == null) {
 
                          Test Tst3 =new Test() ;
                          Tst3.m_attr=attr.index();
                          Tst3.m_val=val;
                          cr.m_ruleSize=cr.m_ruleSize+1;
                          cr.m_test=Tst3;
 
 
 
    }                       else {
 
 
                          int y = r.m_ruleSize;
 
 
                           Test Tstold =new Test() ;
                           Tstold.m_attr = r.m_test.m_attr;
                           Tstold.m_val = r.m_test.m_val;
                           cr.m_test=Tstold;
 
                          Test Tst3 =new Test() ;
                          Tst3.m_attr=attr.index();
                          Tst3.m_val=val;
 
                          cr.m_test.m_next=Tst3;
                          cr.m_ruleSize=y; 
                          cr.m_ruleSize++;
 
 
 
                           }
 
 
 
 
 
 
 
 
                          CR.add(cr); 
                          // System.out.println("new added "+cr);
 
 
 
                 }
 
 
 
            }
 
 
 
       List<PrismRule> CR1= new ArrayList<PrismRule>();
       CR1=CR;
 
 
 
 
 
  return  CR ;
   }
mon probleme c'est que ce code ajout une condition pour une regle qui n as pas de test ou ajoute un test dans la deuxième position , cad si j'ai une règle de type et je veux ajouter teste4 ca va me donner , comment je fais ?