2016-11-22 6 views
-3

Warum druckt print toString() Array-Klassenmitgliedsobjekte nicht? Es sagt "kann ein ungültiges Ergebnis nicht zurückgeben". Welche Art von Ergebnis möchte es, wenn meine privaten ArrayList-Objekte Werte enthalten?print toString() druckt keine ArrayList-Klassenmitgliedsobjekte

ZB: In Person Klassen-

public class Person { 

    private ArrayList <String> name; 

    private ArrayList <Integer> number; 

    public Person(ArrayList <String> thatName, ArrayList <Integer> thatNumber) 
    { 
     name = new ArrayList <String>(thatName); 
     number = new ArrayList <Integer>(thatNumber); 
    } 

    public ArrayList<String> getName() 
    { 
     return name; 
    } 

    public ArrayList<Integer> getNumber() 
    { 
     return number; 
    } 

    public String toString() 
    { 
     return System.out.println(name + "" + number); //Gives error "cannot return a void result"  
    } 

Außerdem kann ich String.format(,) Arbeit in diesem Fall machen? Ich habe es versucht, aber es funktioniert nicht, da die ArrayList-Objekttypen keine primitiven Datentypen sind.

EDIT:

Hier ist, wie ich Person Klasse nenne aber toString() nichts zu drucken.

import java.util.ArrayList; 
public class PersonTest { 

public static void main(String[] args) { 

    ArrayList <String> nam = new ArrayList <String>(); 
    ArrayList <Integer> numb = new ArrayList <Integer>(); 

    nam.add("Zeus"); 
    numb.add(99); 

    Person pr = new Person(nam, numb); 

    pr.toString(); 

} 

} 
+0

Diejenigen, die unten abstimmen, bitte hinterlassen Sie auch einen Grund, wenn Sie ein menschliches Wesen sind. – Zeus

+0

Lesen Sie die Dokumentation. Lernen Sie die Java API. Verstehe die sehr selbsterklärende Fehlermeldung ... * Frage zeigt keinen Forschungsaufwand * ist auf dem Hover-Text des Abwärtspfeils. –

+2

Nun, zuerst wird dies nicht einmal kompilieren ... so ist der Titel ** print toString() ArrayList-Klasse-Member-Objekte ** nicht korrekt gedruckt. – AxelH

Antwort

1

System.out.println ist ein Void, daher kann nichts zurückgegeben werden. Was Sie tun sollten:

public String toString() 
{ 
    return name + " " + number; 
} 

und in der Anrufer, Nutzung Person Instanz zu drucken:

System.out.println(person.toString()); 

oder unten, da ein Objekt Druck wird die toString() -Methode automatisch aufrufen.

System.out.println(person); 
+0

Danke, aber es funktioniert nicht. Ich habe meine Anrufmethode und ihre Klasse veröffentlicht. Bitte helfen Sie – Zeus

+1

, nachdem Sie Änderungen in der toString() - Methode, für die aufrufende Klasse nur System.out.println (pr.toString()) – Rudy

+1

@Zeus Sie können auch einfach "System.out.println (person) ' –

2

Sie wollen einen String zurück, ist println ein void Verfahren.

Etwas entlang der Linien dieser Python Frage - How is returning the output of a function different than printing it?

ändern

return System.out.println(name + "" + number) 

zu return name + "" + number;

Außerdem kann ich machen String.format (,) Arbeit in diesem Fall ?

Sicher. return String.format("Names: %s\nNumbers: %s", name, number);

+0

Danke, aber es funktioniert nicht. Ich habe meine Anrufmethode und ihre Klasse veröffentlicht. Bitte helfen Sie. – Zeus

+2

@Zeus, 'pr.toString()' wird nichts erwarten, einen String-Wert zu erhalten. Sie müssen den Wert über 'System.out.print (String)' ausdrucken. Und dies kann nicht in der 'toString()' (nicht mindestens auf der Return-Line) -Methode getan werden, da dies einen String zurückgeben muss. Lesen Sie die vollständige Antwort! – AxelH

Verwandte Themen