2010-03-14 25 views
9

当我尝试编译如下:“‘无效’类型这里不允许”的错误(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 

我真的不知道该怎么开始询问有关此事而不是问:

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

回答

11

如果一个方法返回void那么就没有打印,因此该错误消息。由于printPoint已经打印数据到控制台,你应该直接调用它:

printPoint (blank); 
10

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

你传入的printPoint()的结果 - 这是无效的 - 到println()功能。

4

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

您只需调用printPoint(blank);在你的主要功能和离开它。

1

printPoint版画本身,而不是返回一个字符串。要修复printPoint(空白)而不用System.out.println

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

0

你可能想这样做:printPoint (blank);。看起来你试图打印两次;一旦进入printPoint()并且一次进入main()

相关问题