2016-11-22 6 views
-3

print toString()はなぜArrayクラスメンバオブジェクトを出力しませんか?それは "空白の結果を返すことはできません"と言います。 ArrayListのプライベートオブジェクトに値が含まれているときに、どのような結果が得られますか?print toString()はArrayListクラスメンバオブジェクトを出力しません

例:Personクラス -

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"  
    } 

ではまた、私はこのケースでString.format(,)作業を行うことができますか?私は試してみましたが、ArrayListオブジェクト型はプリミティブなデータ型ではないため動作しません。

編集:ここでは

私はPersonクラスを呼び出していますが、toString()は何も印刷しない方法です。

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

あなたが人間である場合、ダウン投票している人も理由を残してください。 – Zeus

+0

ドキュメントをお読みください。 Java APIについて学ぶ。非常に自明のエラーメッセージを理解する... *質問は研究努力を示していない*は、下向き矢印のホバーテキスト上にある。 –

+2

まず、これはコンパイルされませんので、title ** print toString()はArrayListクラスメンバオブジェクトを印刷しません**は正しくありません。 – AxelH

答えて

1

System.out.printlnは無効なので、何も返すことはできません。あなたは何をすべき は次のとおりです。印刷に

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

と、発信者、使用者インスタンスで:

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

以下、オブジェクトを印刷すると、自動的に、toString()メソッドを呼び出しますので、。

System.out.println(person); 
+0

ありがとうございますが、動作していません。私は自分の呼び出し方法とそのクラスを投稿しました。 – Zeus

+1

あなたがtoString()メソッドを変更した後、呼び出し側クラスのSystem.out.println(pr.toString())を – Rudy

+1

@ Zeusに変更するだけで助けてください。単純に 'System.out。println(人) ' –

2

あなたはprintlnvoid方法で、文字列を返すようにしたいです。ややこのPythonの質問の線に沿って

からreturn name + "" + number;

からHow is returning the output of a function different than printing it?

変更

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

はまた、私はこのケースで働く(、)String.Formatのを作ることができます?

確かに。 return String.format("Names: %s\nNumbers: %s", name, number);

+0

ありがとうございますが、動作していません。私は自分の呼び出し方法とそのクラスを投稿しました。助けてください。 – Zeus

+2

@ Zeus、 'pr.toString()'はString値を得ることを期待していません。値を 'System.out.print(String)'で出力する必要があります。これは 'toString()'メソッド(少なくとも返り値の行ではない)で行うことはできません。これはStringを返す必要があるためです。完全な答えをお読みください! – AxelH

関連する問題