2010-12-10 64 views
0

Salut Ceci est mon code complet! J'ai two lists dedans, on est dans l'ordre croissant (inorder list) et l'autre n'est pas! Il doit imprimer 0 mais il imprimera -1, s'il vous plaît aidez-moi merci!ce code n'imprime pas l'index correct!

public class NewClass{ 

private static List<Element> list; 
private static List<Element> inorder; 

public NewClass(List listOne, List inorderOne) { 
    list = new ArrayList(listOne); 
    inorder = new ArrayList(inorderOne); 
    FindAllowedTrees((ArrayList<Element>) list); 

} 
public static void FindAllowedTrees(ArrayList<Element> result) { 

    for (int i = 0; i < result.size() -1; i++) { 
     if (result.get(i+1).getDigit() > result.get(i).getDigit()) { 


      int indx = inorder.indexOf(0); 
      System.out.println(indx); 


     } 
    } 

} 

public static void main(String[] args){ 
    List<Element> listTwo = new ArrayList(); 
    List<Element> listOne = new ArrayList(); 
    Element e = new Element(0, 0.12); 
    Element e1 = new Element(2, 0.13); 
    Element e3 = new Element(3,0.5); 
    listTwo.add(e); 
    listTwo.add(e1); 
    listTwo.add(e3); 
    listOne.add(e); 
    listOne.add(e1); 
    listOne.add(e3); 

    Collections.sort(listOne,new SortingObjectsWithDigitField()); 

    new NewClass(listTwo,listOne); 
} 
} 
+0

également chaque élément de la liste a deux champs doubles 1) chiffre 2) probabilité – user472221

+0

que voyez-vous lorsque vous essayez de déboguer votre programme dans un débogueur? –

+0

lorsque je le déboguer, il va imprimer: -1 -1 – user472221

Répondre

2

Votre liste est une liste d'objets Element. Vous recherchez l'index de l'entier 0. Un nombre entier ne sera jamais égal à Element, par conséquent indexOf() ne trouve pas 0 et renvoie -1 pour indiquer qu'il n'a pas été trouvé.

+0

OOPs vous avez raison je l'ai changé pour: int indx = inorder.indexOf (result.get (i)); – user472221