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 void
retourneert, 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 printPoint
af 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 println
een String nodig heeft om af te drukken, maar in plaats van een string, roept u de printPoint
methode 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%
printPoint
drukt 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()
.