当我尝试编译时:
import java.awt.* ;
class obj
{
public static void printPoint (Point p)
{
System.out.println ("(" + p.x + ", " + p.y + ")");
}
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
我真的不知道怎么开始问这个问题,而不是问:
答案 0 :(得分:13)
您正在尝试打印printPoint
的结果,但不返回任何内容。您需要更改代码以执行以下两项操作之一:
class obj
{
public static void printPoint (Point p)
{
System.out.println ("(" + p.x + ", " + p.y + ")");
}
public static void main (String[]arg)
{
Point blank = new Point (3,4) ;
printPoint (blank) ;
}
}
或者这个:
class obj
{
public static String printPoint (Point p)
{
return "(" + p.x + ", " + p.y + ")";
}
public static void main (String[]arg)
{
Point blank = new Point (3,4) ;
System.out.println (printPoint (blank)) ;
}
}
答案 1 :(得分:13)
如果方法返回void
,则无法打印任何内容,因此出现此错误消息。由于printPoint已经将数据打印到控制台,因此您应该直接调用它:
printPoint (blank);
答案 2 :(得分:4)
类型问题是println
需要打印字符串,而不是字符串,而是调用返回printPoint
的{{1}}方法。
您只需在主要功能中拨打void
即可。
答案 3 :(得分:1)
您将printPoint()
的结果 - 无效 - 传递给println()
函数。
答案 4 :(得分:1)
printPoint
自行打印而不是返回字符串。要在没有printPoint
的情况下修正该System.out.println
(空白)。
更好的替代方案可能是:make printPoint(Point p)
返回一个字符串(并将其名称更改为FormatPoint
),这样该方法可用于格式化控制台的点,GUI,打印等,而不是绑在控制台上。
答案 5 :(得分:0)
你可能想做:printPoint (blank);
。看起来你要打印两次;一旦进入printPoint()
,一进入main()
。