2011-08-30 92 views
1

它说找不到Constructor Person(),但是我有班人。我的继承人代码构造函数错误,找不到

public class Person{ 

    private String name; 
    private int age; 
    public String details; 

    public Person(final String name, final int age){ 
     this.name = name; 
     this.age = age; 
    } 
} 

和测试人员类

public class TestPerson{ 
    public static void main(String args[]){ 
     int q; 
     System.out.println(args.length + "objects created"); 
     for(q = 1; q < args.length; q++){ 
      final Person p1 = new Person(); 
      for(int x = 0; x < args[q].length(); x++){ 
       args[q].split(","); 
       p1.setDetails(name, age); 
       System.out.println(p1); 
      } 
     } 
    } 
} 
+0

如下所述,没有Person类的默认构造函数。 Java会自动为任何没有定义其他构造函数的类创建一个默认构造函数。既然你定义了一个构造函数,java将不会自动为你创建一个。如果你需要一个默认的类构造函数,只需定义一个。 – DwB

回答

1

你声明的人的构造要求有两个参数。通过它两个参数。

2

您的Person构造函数需要两个参数。在测试程序中调用它时,必须传递两个参数。

或者你可以创建第二个构造函数,它在你的Person类中没有参数。

+0

isee。我已经尝试过新人(姓名,年龄);但它也说年龄也“无法找到符号名称”。 – JGE18

+0

当你打电话时,你必须给它实际值。像“新人”(“JGE18”,42);'。如果你做'新人(姓名,年龄)','姓名'和'年龄'必须是在该范围内可见的变量。 – Mat

+0

isee,但值应该使用命令行参数。我尝试新人(姓名[],年龄[]);看看它是否有效。 – JGE18

3
Person p1 = new Person(); 

由于您定义了带参数的构造函数(并且没有参数的构造函数),因此此行失败。如果您没有为您的类定义任何构造函数,编译器会插入一个空的默认构造函数。但是,如果您完全定义了任何构造函数,那么编译器不会插入默认构造函数,并且您需要提供所需的构造函数。

Sun Java Tutorial阅读这些文章:

1

构造是

public Person(String name, int age) 

,所以你不能叫

Person p1 = new Person(); 

Person p1 = new Person(name, age); 

当然,你需要定义年龄第一,你的计划似乎永远不会做......

+0

我确实宣布了。私人字符串名称和私人时间。并尝试过庇隆(姓名,年龄);已经。但它说找不到名字和年龄。 – JGE18