“此处不允许”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来打印,而不是字符串,而是调用返回void
的printPoint
方法。
你可以调用printPoint(blank);
在你的主要function中,并留在那。
您将printPoint()
的结果 – 无效 – 传递给println()
函数。
printPoint
打印而不是返回字符串。 在没有System.out.println
情况下修复调用printPoint
(空白)。
一个更好的选择可能是:make printPoint(Point p)
返回一个字符串(并将其名称更改为类似FormatPoint
),这样该方法可用于格式化控制台,GUI,打印等点而不是绑定到控制台。
你可能想做: printPoint (blank);
。 看起来你要打印两次; 一次在printPoint()
内部,一次在main()
。