&引用';无效';此处不允许输入“;错误(Java)

&引用';无效';此处不允许输入“;错误(Java),java,Java,当我试图编译此文件时: import java.awt.* ; class obj { public static void printPoint (Point p) { System.out.println ("(" + p.x + ", " + p.y + ")"); } public static void main (String[]arg) {

当我试图编译此文件时:

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
我真的不知道如何开始问这个问题,除了问:

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

您正在尝试打印不返回任何内容的
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)) ;
    }
}

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

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

printPoint (blank); 

类型问题是,
println
需要打印一个字符串,但是您调用的不是字符串,而是返回
void
printPoint
方法


您只需调用
printPoint(blank),并将其保留在该位置。

printPoint
自行打印,而不是返回字符串。要修复调用
printPoint
(空白)而不使用
System.out.println


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

您可能想要执行的操作:
printPoint(blank)。看起来您正在尝试打印两次;一次进入
printPoint()
,一次进入
main()