2011-04-19 221 views
1

如何解決此類型的編譯錯誤。編譯錯誤:'void'類型不允許在這裏

粗體部分是顯示編譯錯誤的地方。

DegreeDays.java:71: 'void' type not allowed here 
     System.out.println(***"\t"***(error here) + 
      list(test[counter]) + "\t\t\t" + 
      average_temp(test[counter], test[counter - 1])); 

DegreeDays.java:71: 'void' type not allowed here 
     System.out.println("\t" + list(test[counter]) ***+ 
      ***(error here) "\t\t\t" + 
      average_temp(test[counter], test[counter - 1])); 

回答

4

想象一下:

void foo() { 
    // doesn't matter 
} 

System.out.println("" + foo()); // What should happen here? 

答案是爆炸 - 這就是javac的是做正確。方法foo有一個「無效結果類型」(none,nada,zilch)。沒有對象返回。永遠。甚至沒有空。沒有「什麼」,編譯器會拒絕嘗試使用「無」作爲「某事」。

(用「空隙結果類型」 A法比的方法不同,其可以返回null - 例如返回類型爲對象。 - 這種方法還有一個「非空」結果類型)

快樂編碼。

+0

thanx的幫助... – 2011-04-19 04:38:47

0

listaverage_temp似乎最有可能不返回string

+0

他們不必返回一個字符串。因爲編譯器已經確定正在執行字符串連接操作(它看到+運算符至少有一個操作數,它可以告訴是一個字符串),所以它們會隱含地調用它們的.toString()方法。 – Matt 2013-02-01 05:06:22

0

System.out.print()必須要顯示一些東西。因此,如果您在其中寫入任何不會返回任何內容的void方法,它將顯示錯誤。

因此,在你的代碼:

System.out.println("\t" + list(test[counter]) + "\t\t\t" + average_temp(test[counter], test[counter - 1])); 

我覺得average_tempvoid類型。

0

您嘗試打印方法返回Nothing(void)。

我認爲這是list()方法檢查它是否返回stringvoid ..

如果返回void,你必須從println方法刪除它..

相關問題