2010-03-14 24 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()

相關問題