什么导致了“此处不允许使用‘void’类型”的错误?

21

当我尝试编译这个时:

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

我不太知道如何开始询问这个问题,除了问一下:

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

23
如果一个方法返回void,那么就没有什么可打印的内容,因此会出现这个错误消息。由于printPoint已经将数据打印到控制台了,所以你应该直接调用它:
printPoint (blank); 

16
你正试图打印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)) ;
    }
}

4
类型问题在于,println需要一个字符串进行打印,但你调用的是返回voidprintPoint方法,而不是一个字符串。
你只需要在主函数中调用printPoint(blank);即可。

1

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


1

printPoint会自行打印而不是返回一个字符串。要修复这个问题,请调用不带System.out.printlnprintPoint(空白)。

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


0
import java.awt.* ;
 
class Main
{
    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) ;
    }
}

//在函数中,如果没有返回任何值,你无法打印该值,请尝试这个


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接