私はStackOverflowで検索しましたが、これは "自分自身で"これを把握しようとしています。私は私がtoString()
の方法で無限の再帰の問題に座っていると思うが、私はこれについて全く新しいので確信は持てない。toString()の無限再帰を防ぐにはどうすればよいですか?
私は、私のコードをご提供し、すべての最初の、問題はあなたに明確に表示されるようになると思います。私はあなたが私がやろうとしているかを見ることができるかどうかはわからない
import java.util.ArrayList;
public class User{
private String name;
private ArrayList<User> friends;
private static ArrayList<User> users = new ArrayList<User>();
public User(String name){
this.name = name;
this.friends = new ArrayList<User>();
users.add(this);
}
public void addFriend(User friend){
friends.add(friend);
}
public static void connect(User user1, User user2){
user1.addFriend(user2);
user2.addFriend(user1);
}
public static ArrayList<User> getUsers(){
return users;
}
public String toString(){
return String.format("%s : %s", name, friends);
}
}
が、友人とユーザー「アリス」「ボブ」と「チャーリー」、例えば{friend1、friend2、friend3、...}
:
名前:私のtoString
のフォーマットは、このようなことになっていますこのように印刷されます
アリス:{Bob、Charlie、}
私はこれを達成するためにどのように進むべきかはわかりません。どんな助けでも大歓迎です。これまでに答えがあるのかどうか謝りましたが、私が以前に見つけた答えは理解できませんでした。
これは私のmain
-methodあり、また、役に立つかもしれません:
public class Main{
public static void main(String args[]){
User bob = new User("Bob");
User alice = new User("Alice");
User charlie = new User("Charlie");
User.connect(alice, bob);
User.connect(alice, charlie);
System.out.println(User.getUsers());
}
}
あなたがゲットしているエラーは何ですか?何がうまくいかないのですか? – CodeGhost
@CodeGhostエラーはとても信じられないほど長く、私はそれをすべてに収めることができないので、最初にそれを含めなかったのですが、私はここでできることを投稿します: 編集:それは長すぎます50K文字を超えています。エラーのどの部分が最も重要かわかりません。ここに画像を投稿する方法はありますか? java.lang.StringBuilder.append(のStringBuilderでjava.lang.String.valueOfでUser.toStringで –
@CodeGhost (User.java:28) \t(String.java:2994) \t。Javaの:131)java.util.AbstractCollection.toString(AbstractCollection.java:462)で \t java.util.Formatter $ FormatSpecifier.printString(Formatter.java:2886)で \tで \t java.util.Formatter $ FormatSpecifier .PRINT(Formatter.java:2763)java.util.Formatter.format(Formatter.java:2520)で \t java.util.Formatter.format(Formatter.java:2455)されるjava.langにおける \tで\t。 String.format(String.java:2940) これらの数行は、ほとんどが自分自身を繰り返しています。 –