为什么我不能从Java中的void函数返回一个值?

时间:2009-10-28 22:58:00

标签: java

纠正方法getAge()

的以下错误定义
public void getAge() 
{
   return age;
}

将答案粘贴在此处:

public int getAge(int age) 
{ 
return age; 
}

马克:1中有0

评论:

* Test 1 (0.0 out of 1)

      Person.java:15: getAge(int) in Person cannot be applied to ()
              String s = (p.getAge() == 16 ? "getAge() Correct" : "getAge() not Correct");
                           ^
      1 error
      The output should have been:
          getAge() Correct

      This is what was actually produced:
          Exception in thread "main" java.lang.NoClassDefFoundError: Person

而不是(int age)它是否要我用String替换它?

5 个答案:

答案 0 :(得分:4)

我相信您正在寻找的正确代码是:

public int getAge() 
{ 
  return age; 
}

基本上说getAge()不需要参数(你的错误在哪里,你传入了一个整数参数),它将返回int类型的值。

答案 1 :(得分:2)

不,它要你给它正确的返回类型!

public int getAge() 
{
   return age;
}

答案 2 :(得分:1)

只需使用命令行中的java compiler(或体面的IDE)来了解正在发生的事情。 (你似乎只是在学校的家庭作业测试工具中粘贴代码并得到神秘的错误。)

这是什么意思?

  This is what was actually produced:
      Exception in thread "main" java.lang.NoClassDefFoundError: Person

这意味着家庭作业测试工具试图编译你的Person类而它不能(见下文)然后测试工具运行并且找不到Person类(因为它没有编译)

问题在于:

public void getAge() 
{
   return age;
}

返回void的方法无法返回值。 (如果您使用过javac,编译器会告诉您。)

所以年龄是一个int,你需要返回它:

public int getAge() 
{
   return age;
}

答案 3 :(得分:0)

不,它不需要参数。您返回对象属性的值(在本例中为p)。

答案 4 :(得分:0)

我认为问题是它正在尝试将getAge(int)功能应用于对getAge()的调用。回过头来再想一想getAge正在尝试做什么,以及它应该做什么信息(参数)。然后重写你的函数定义。