2014-01-20 1 views
0

Это мой код до сих пор:Java Bluejay «)» ожидается ошибка кажется неточным

public class PersonTester 
{ 
public static void main(String[] args) 
{ 

    DataSet personData = new DataSet(Measurer measureMore); 
    //error at Measurer "')' expected" 

    data.add(new Person("Joe", 183)); 
    data.add(new Person("Chrissy", 158)); 
    data.add(new Person("Bobby", 175)); 

    double avg = data.getAverage(); 
    Person max = (Person) data.getMaximum(); 

    System.out.println("Average height: " + avg); 
    System.out.println("Expected: 172.0"); 
    System.out.println("Name of tallest person: " + max.getName()); 
    System.out.println("Expected: Joe"); 
    } 
} 

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

ответ

0

Похоже, вы пытаетесь объявить или инициализировать переменную и пройти за один шаг.

Попробуйте один из этих вариантов:

DataSet personData = new DataSet(new Measurer()); 

или если вам нужна ссылка на экземпляр Measure:

Measurer measureMore = new Measurer(); 
DataSet personData = new DataSet(measureMore); 
+0

Спасибо! Измеритель был интерфейсом, но я создал ссылку на класс, который его реализовал, а затем вызвал в параметре, и он работал – bkgirl113

0

DataSet - это интерфейс, как вы сказали, но вы не можете создать экземпляр интерфейса (не можете использовать new). Чтобы использовать это, вам нужно будет вместо этого найти или создать класс, который реализует DataSet, а затем создаст его.

2

Когда вы передаете переменную measureMore в вызове метода, вы не ставите этот тип. Вам нужно создать объект мерителем первым, а затем передать его в конструктор, как:

DataSet personData = new DataSet(measureMore); 

По крайней мере, это начало!

0

Компилятор идет на разборе до тех пор, как код он обработал является начало какой-либо действительной программы. Если он дойдет до точки, в которой нет действительного продолжения, он сообщает как «ожидаемый» один из токенов, которые позволили бы продолжить разбор.

В этом случае

public class PersonTester 
{ 
public static void main(String[] args) 
{ 

    DataSet personData = new DataSet(

мог быть действительным. new DataSet должен был стать анонимным объявлением внутреннего класса, который реализует DataSet, и в этом случае следующий токен был бы «)», а затем «{», открывающий тело объявления класса.

Как и объяснение сообщения об ошибке, это предполагает дополнительный способ изменения кода, который должен быть действительным - использовать анонимный внутренний класс в качестве инициализатора.