2017-10-16 12 views
2
package Comparar; 

import java.util.*; 

public class Exercici { 

    public void Exercici(){ 

    } 

    public static <E extends Comparable <E>> int numMinors(E e, Iterator<E> it){ 
     int numMenors = 0; 
     while(it.hasNext()){ 
      int comparacio = e.compareTo(it.next()); 
      if (comparacio == -1){ 
       numMenors += 1; 
      } 
     } 
     return numMenors; 
    } 

    public static <E extends Comparable <E>> int numMinors(Comparator<E> comp, E e, Iterator<E> it){ 
     int numMenors =0; 
     while (it.hasNext()){ 
      int comparacio = comp.compare(e, it.next()); 
      if(comparacio == -1){ 
       numMenors += 1; 
      } 
     } 
     return numMenors; 
    } 

} 

La classe de test unitaire:test JUnit ne reconnaît pas ma fonction (fonctions génériques)

import java.util.*; 
import org.junit.After; 
import org.junit.AfterClass; 
import org.junit.Before; 
import org.junit.BeforeClass; 
import org.junit.Test; 
import static org.junit.Assert.*; 

public class ExerciciTest { 

    public ExerciciTest() { 

    } 

    @Test 
    public void compararCosesComparables() { 
     int num = 0; 

     Bottle b1 = new Bottle(0.33, 10, "Agua de Oro", "Dubai"); 
     Bottle b2 = new Bottle(1.5, 1, "asdf", "Rabat"); 
     Bottle b3 = new Bottle(2.5, 1.5, "qwerty", "Londres"); 
     Bottle b4 = new Bottle(5, 2, "poiuy", "Paris"); 
     Bottle b5 = new Bottle(2.5, 2, "Botella", "EEUU"); 

     List<Bottle> alb = new ArrayList<>(); 
     Iterator<Bottle> it = alb.iterator(); 
     alb.add(b1); 
     alb.add(b2); 
     alb.add(b3); 
     alb.add(b4); 

     num = numMinors(b5, it); //Error cannot find symbol 

    } 

    @Test 
    public void compararCosesAmbComparador() { 
     int num = 0; 

     Bottle b1 = new Bottle(0.33, 10, "Gold water", "Dubai"); 
     Bottle b2 = new Bottle(1.5, 1, "asdf", "Rabat"); 
     Bottle b3 = new Bottle(2.5, 1.5, "qwerty", "Londres"); 
     Bottle b4 = new Bottle(5, 2, "poiuy", "Paris"); 
     Bottle b5 = new Bottle(2.5, 2, "Botella", "EEUU"); 

     ArrayList<Bottle> alb = new ArrayList<>(); 
     BottleComparator comp = new BottleComparator(); 
     Iterator<Bottle> it = alb.iterator(); 

     alb.add(b1); 
     alb.add(b2); 
     alb.add(b3); 
     alb.add(b4); 

     num = numMinors(comp, b5, it); //Error cannot find symbol 

    } 

} 

alors je suis 3 classes, BottleComparator qui implémente Comparator, bouteille qui implémente Comparable et exercici qui est le classe qui contient les méthodes que l'on m'a demandé de faire.

Le problème est que la classe de test ne semble pas reconnaître ma fonction numMinors, j'ai déjà essayé de mettre tous les docs sur un autre paquet et de fermer le projet et de l'ouvrir une autre fois. Un indice?

(je dois encore mettre les fonctions assert sur le test)

Le message d'erreur:

Impossible de trouver le symbole

symbole: numMinors méthode (......)

lieu: classe exerciciTest

Répondre

0

numMinors n'est pas une méthode statique de votre classe ExerciciTest. C'est une méthode statique de votre classe Exercici. Vous pouvez donc faire Exercici.numMinors(...) mais pas ExerciciTest.numMinors(...).

Ici, vous appelez numMinors(...) directement dans votre classe ExerciciTest. Il y a une erreur puisqu'il n'y a pas de méthode statique numMinors en ExerciciTest classe