2015-07-07 2 views
-2

У меня был тест с внутренним классом и возврат среднего значения, но я не могу заставить его работать правильно.Внутренний класс интерфейса

У меня есть класс с внутренним интерфейсом с двумя методами, и мне нужно протестировать его из другого класса, но ничего не похоже на работу.

Я пробовал много способов, но до сих пор не знаю, что не так?

Может кто-нибудь, пожалуйста, взгляните и попробуйте рассказать мне, что я делаю неправильно, или скажите, что мне нужно сделать, чтобы проверить класс BetterProgrammerTask?

Я добавлю класс с внутренним интерфейсом и классом тестирования, который пытается его использовать.

Программа тест:

public class BetterProgrammerTask { 

    // Please do not change this interface 
    public static interface Node { 
     int getValue(); 

     List<Node> getChildren(); 
    } 

    // Please do not change this interface 

    public static double getAverage(Node root) { 
     /* 
      Please implement this method to 
      return the average of all node values (Node.getValue()) in the tree. 
     */ 
     int suma = root.getValue() + suma(root.getChildren()); 
     int count = 1 + count(root.getChildren()); 
     return suma/count; 
    } 

    private static int suma(List<Node> nodes) { 
     if (nodes == null || nodes.isEmpty()) { 
      return 0; 
     } 
     int suma = 0; 
     for (Node n : nodes) { 
      suma += n.getValue() + suma(n.getChildren()); 
     } 
     return suma; 
    } 

    private static int count(List<Node> nodes) { 
     if (nodes == null || nodes.isEmpty()) { 
      return 0; 
     } 
     int suma = 0; 
     for (Node n : nodes) { 
      suma += 1 + count(n.getChildren()); 
     } 
     return suma; 
    } 
} 

класс с методом испытаний является:

import main.java.org.example.BetterProgrammerTask.Node; 

public class TestBetterProgrammerTask implements BetterProgrammerTask.Node { 

    public static void main(String[] args) { 

     int sum = 0; 
     double sumDouble = 0; 
     System.out.println("EXAMPLE III"); 
     // get NodeImpl 

     // 
     // getAverage does not accept my node definition ????? 
     // 
     sumDouble = getAverage(Node); 


     DecimalFormat four = new DecimalFormat("#0.00"); 
     System.out.println("For this process the node average calculated is " + four.format(sumDouble)); 
    } 

    // 
    // and average and getChildren are not filled yet and still did not 
    // due to errors in the getAverage 
    // 
    @Override 
    public int getValue() { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @Override 
    public List<BetterProgrammerTask.Node> getChildren() { 
     // TODO Auto-generated method stub 
     return null; 
    } 
} 
+0

Soory но забыл приветствовать кого-либо, кто интересуется этим вопросом. :-) – sam

+1

Это на самом деле хорошая вещь. Мы пытаемся создать сайт проблем-> решений, поэтому «привет», «спасибо заранее» не нужно. Дополнительная информация на http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts – Pshemo

+0

'sumDouble = getAverage (новый TestBetterProgrammerTask());' потому что 'Node' - это интерфейс и ему нужен экземпляр' Node'. – weston

ответ

0

import static импортировать методы как getAverage. И создать экземпляр Node

package main.java.org.example; 

import java.text.DecimalFormat; 
import java.util.List; 

import static main.java.org.example.BetterProgrammerTask.getAverage; 

public class TestBetterProgrammerTask implements BetterProgrammerTask.Node { 

    public static void main(String[] args) { 

     int sum = 0; 
     double sumDouble = 0; 
     System.out.println("EXAMPLE III"); 
     // get NodeImpl 

     BetterProgrammerTask.Node node = new TestBetterProgrammerTask(); 
     sumDouble = getAverage(node); 

//rest unchanged 

NB: Я также не рекомендую использовать main.java как часть пакета.

NB2: Вы можете использовать Default Methods, если вы используете Java 8. И место getAverage как метод, с его реализацией на интерфейсе узла, не должны импортировать метод статический и назвать его в качестве члена Node.

+0

Я использую main.java из-за компиляции с использованием maven. Я реализовал результат, который отлично работает. – sam

+0

ОК, Примите ответ, затем – weston

+0

Кстати, ваша установка maven должна быть неправильной, это не нормально. Может быть, вам стоит задать вопрос. – weston

Смежные вопросы