2010-03-14 32 views
9

Cuando intento compilar esto:" 'vacío' tipo no permitido aquí" error (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)) ; 
     } 
    } 

me sale este error:

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

que no se sabe muy bien cómo comience a preguntar sobre esto aparte de preguntar:

  • ¿Qué salió mal aquí?
  • ¿Qué significa este mensaje de error?

Respuesta

11

Si un método devuelve void, entonces no hay nada que imprimir, de ahí este mensaje de error. Desde printPunto ya imprime los datos a la consola, sólo debe llamar directamente:

printPoint (blank); 
10

Está tratando de imprimir el resultado de printPoint que no devuelve nada. Tendrá que cambiar el código para realizar una de estas dos cosas:

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

o esto:

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

está de paso el resultado de printPoint() - sea nulo - a la función println().

4

El problema es que el tipo println toma una cadena de imprimir, pero en lugar de una cadena, que está llamando el método que es printPoint devolviendo void.

Puede llamar al printPoint(blank); en su función principal y dejarlo así.

1

printPoint imprime por sí mismo en lugar de devolver una cadena. Para arreglar esa llamada, llame al printPoint (en blanco) sin el System.out.println.

Una mejor alternativa podría ser: hacer printPoint(Point p) devolver una cadena (y cambiar su nombre a algo así como FormatPoint), de esa manera, el método puede ser usado para dar formato a un punto de la consola, interfaz gráfica de usuario, imprimir, etc. en vez de estar atado a la consola.

0

Probablemente quiso hacer: printPoint (blank);. Parece que estás intentando imprimir dos veces; una vez dentro de printPoint() y una vez dentro de main().

Cuestiones relacionadas