2010-03-14 1 views
9

오류 (자바) :" '무효'여기에 허용되지 않는 유형"이 컴파일 할 때

obj.java:12: 'void' type not allowed here 
     System.out.println (printPoint (blank)) ; 
              ^
1 error 

정말 어떻게 해야할지 모르겠 :

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)) ; 
     } 
    } 

나는이 오류 이 질문 이외에 묻는 시작 :

  • 무엇이 잘못 되었습니까?
  • 이 오류 메시지는 무엇을 의미합니까?

답변

11

메서드가 void을 반환하면 인쇄 할 내용이 없으므로이 오류 메시지가 표시됩니다.

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 메소드를 호출하고 있습니다 : printPoint 이미 콘솔에 데이터를 출력하기 때문에, 당신은 단지 직접 호출해야합니다 void을 반환합니다.

주 기능에서 printPoint(blank);으로 전화를 걸면됩니다.

1

printPoint은 문자열을 반환하지 않고 인쇄합니다. System.out.println없이 해당 전화 printPoint (공백)을 수정하십시오.

보다 나은 대체 방법은 다음과 같습니다. printPoint(Point p) 문자열을 반환하고 그 이름을 FormatPoint과 같이 변경하면 메서드를 사용하여 콘솔, GUI, 인쇄 등의 점을 묶지 않고 사용할 수 있습니다. 콘솔에.

0

아마도 : printPoint (blank);을 원했을 것입니다. 두 번 인쇄하려고하는 것 같습니다. 일단 printPoint() 안에 들어가고 한 번 안으로 main().

관련 문제