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

时间:2010-03-14 15:45:23

标签: 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)
        {
            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

我真的不知道怎么开始问这个问题,而不是问:

  • 这里出了什么问题?
  • 此错误消息的含义是什么?

6 个答案:

答案 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()