“此处不允许”void’类型”错误(Java)

当我尝试编译时:

import java.awt.* ; class obj { public static void printPoint (Point p) { System.out.println ("(" + px + ", " + py + ")"); } public static void main (String[]arg) { Point blank = new Point (3,4) ; System.out.println (printPoint (blank)) ; } } 

我收到此错误:

 obj.java:12: 'void' type not allowed here System.out.println (printPoint (blank)) ; ^ 1 error 

我真的不知道如何开始询问这个问题而不是问:

  • 这里出了什么问题?
  • 这个错误信息是什么意思?

如果方法返回void ,则无需打印,因此出现此错误消息。 由于printPoint已将数据打印到控制台,因此您应该直接调用它:

 printPoint (blank); 

您正在尝试打印不返回任何内容的printPoint结果。 您需要更改代码以执行以下两项操作之一:

 class obj { public static void printPoint (Point p) { System.out.println ("(" + px + ", " + py + ")"); } public static void main (String[]arg) { Point blank = new Point (3,4) ; printPoint (blank) ; } } 

或这个:

 class obj { public static String printPoint (Point p) { return "(" + px + ", " + py + ")"; } public static void main (String[]arg) { Point blank = new Point (3,4) ; System.out.println (printPoint (blank)) ; } } 

类型问题是println需要一个String来打印,而不是字符串,而是调用返回voidprintPoint方法。

你可以调用printPoint(blank); 在你的主要function中,并留在那。

您将printPoint()的结果 – 无效 – 传递给println()函数。

printPoint打印而不是返回字符串。 在没有System.out.println情况下修复调用printPoint (空白)。

一个更好的选择可能是:make printPoint(Point p)返回一个字符串(并将其名称更改为类似FormatPoint ),这样该方法可用于格式化控制台,GUI,打印等点而不是绑定到控制台。

你可能想做: printPoint (blank); 。 看起来你要打印两次; 一次在printPoint()内部,一次在main()