2009-10-28 281 views
0

正確的方法getAge()下列錯誤定義爲什麼我不能從Java中的void函數返回值?

public void getAge() 
{ 
    return age; 
} 

在這裏你的答案貼:

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

馬克:0出1

評論:

* 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年齡)它是否要我用一個Strin替換它G?

+0

只是刪除了參數,並挑選'this.age'。 – Davio 2015-02-01 13:05:42

回答

2

不,它希望你給它正確的返回類型!

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

他有返回類型的權利,只是錯誤的論點。 – Tim 2009-10-28 23:04:23

+0

有什麼論點?這個訪問器沒有任何爭論!這是指定的錯誤返回類型(void)! – ennuikiller 2009-10-28 23:08:22

+0

他得到了一半的答案。他將返回類型從void更正爲int,但忽略刪除訪問器方法的「int age」參數。 – 2009-10-29 01:45:01

0

不,它不需要參數。您返回對象屬性的值(在這種情況下爲p)。

4

我相信你正在尋找正確的代碼是:

public int getAge() 
{ 
    return age; 
} 

基本上說getAge()不需要任何參數(如果你的錯誤是,你有一個整數參數傳遞的),它會返回一個int類型的值。

0

我認爲問題在於它試圖將getAge(int)函數應用到getAge()的調用中。回去再想想getAge正在做什麼,以及它應該需要做什麼信息(參數)。然後重寫你的函數定義。

1

只需在命令行(或體面的IDE)中使用java compiler即可瞭解發生了什麼。 (你似乎只是在你學校的家庭作業測試工具中粘貼代碼,並得到神祕的錯誤。)

這是什麼意思?

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; 
} 
相關問題