编译错误:此处不允许使用'void'类型

时间:2011-04-19 04:11:34

标签: java compiler-errors 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 个答案:

答案 0 :(得分:4)

想象一下:

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

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

答案是爆炸 - 这就是javac正在做的事情。方法foo具有“无效结果类型”(none,nada,zilch)。没有返回任何对象。永远。甚至不是空的。 “没有”,编译器将拒绝尝试使用“无”作为“某事”。

(具有“void结果类型”的方法与可以返回null的方法不同 - 例如,返回类型是Object - 这样的方法仍然具有“非void“结果类型。”

快乐的编码。

答案 1 :(得分:0)

listaverage_temp似乎很可能没有返回string

答案 2 :(得分:0)

System.out.print()必须展示一些东西。因此,如果您在其中编写任何不返回任何内容的void方法,则会显示错误。

所以在你的代码中:

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

我认为average_temp的类型为void

答案 3 :(得分:0)

你尝试打印方法返回Nothing(void)。

我认为list()方法检查是否返回stringvoid ..

如果它返回void,您必须从println方法中删除它。