Wat veroorzaakt de fout ‘void’ type is hier niet toegestaan

Als ik dit probeer te compileren:

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

Ik krijg deze foutmelding:

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

Ik weet niet echt hoe ik hierover moet beginnen, behalve door te vragen:

  • Wat ging hier mis?
  • Wat betekent deze foutmelding?

Antwoord 1, autoriteit 100%

Als een methode voidretourneert, is er niets om af te drukken, vandaar deze foutmelding. Aangezien printPoint al gegevens naar de console afdrukt, moet u het gewoon rechtstreeks aanroepen:

printPoint (blank); 

Antwoord 2, autoriteit 75%

U probeert het resultaat van printPointaf te drukken dat niets teruggeeft. U moet uw code wijzigen om een ​​van deze twee dingen te doen:

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

of dit:

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

Antwoord 3, autoriteit 20%

Het typeprobleem is dat printlneen String nodig heeft om af te drukken, maar in plaats van een string, roept u de printPointmethode aan die void.

Je kunt gewoon printPoint(blank);aanroepen in je hoofdfunctie en het daarbij laten.


Antwoord 4, autoriteit 5%

Je geeft het resultaat van printPoint()– dat ongeldig is – door aan de functie println().


Antwoord 5, autoriteit 5%

printPointdrukt zelf af in plaats van een string terug te sturen. Om dat probleem op te lossen, roept u printPoint(leeg) aan zonder de System.out.println.

Een beter alternatief kan zijn: laat printPoint(Point p)een string retourneren (en verander de naam in iets als FormatPoint), op die manier kan de methode worden gebruikt om een ​​punt voor de console, GUI, print, enz. te formatteren in plaats van gebonden te zijn aan de console.


Antwoord 6

U wilde waarschijnlijk het volgende doen: printPoint (blank);. Het lijkt erop dat u twee keer probeert af te drukken; eenmaal in printPoint()en eenmaal in main().

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Other episodes