2014-01-20 19 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

谢谢! Measurer是界面,但是我创建了一个对实现它的类的引用,然后在参数中调用它并且它工作 – bkgirl113

0

DataSet是你说的一个接口,但是你不能实例化一个接口(不能使用new)。为了使用它,您需要找到或创建一个实现DataSet的类,然后将其实例化。

2

当您在方法调用中传递变量measureMore时,不要放置类型。您需要先创建Measurer对象,然后将其传递给构造函数,如:

DataSet personData = new DataSet(measureMore); 

至少这是一个开始!

0

编译器继续解析,只要它的代码已经处理是启动一些有效的程序。如果它到达没有有效延续的点,则报告为“预期”的令牌之一,该令牌将继续解析。

在这种情况下,

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

    DataSet personData = new DataSet(

可能是有效的。 new DataSet必须是实现DataSet的匿名内部类声明的开始,在这种情况下,下一个标记将是“)”,接着是“{”打开类声明的主体。

除了解释错误消息,还提示了一种将代码更改为有效的其他方法 - 使用匿名内部类作为初始化程序。