我们说我的数据集是
Person Friend
--------------------
FriendA FriendB
FriendB FriendC
我想遍历列表并获得最终朋友的文件。到目前为止我已经尝试了这个,它不起作用,当我尝试其他任何东西时,我得到一个堆栈溢出错误。
public class Pair {
public String key;
public String value;
public Pair(String key, String value)
{
this.key = key;
this.value = value;
}
}
import java.io.*;
import java.util.*;
public class OpenFile
{
public static String checkFriend (String name, final ArrayList<Pair> pair)
{
String new_friend_name = null;
for (Pair p : pair)
{
if (p.key == name)
{
new_friend_name = (String) p.value;
}
}
return new_friend_name;
}
public static String getUltimateFriend(String name, final ArrayList<Pair> pair)
{
String friend = null;
if (checkFriend(name, pair) == null) return name;
while (checkFriend(name, pair) != null)
{
friend = checkFriend(name, pair);
}
return friend;
//return new_friend_name;
}
public static void main(String[] args) throws Exception
{
FileReader fr = new FileReader("C:\\Users\\Files\\Desktop\\Java Programs\\data\\data.txt");
BufferedReader br = new BufferedReader(fr);
String line = br.readLine();
String[] var = null;
ArrayList<Pair> pair = new ArrayList<Pair>();
System.out.println("my pair output from a loop");
for (Pair p : pair)
{
System.out.println(p.key + " is friends with " + getUltimateFriend(p.key,pair));
}
br.close();
fr.close();
}
}
我尝试了递归,但是我收到了StackOverflow错误。
任何帮助将不胜感激。
答案 0 :(得分:0)
您不使用递归,因为方法调用本身无处可去。 我想你的问题出在你的循环中:
while (checkFriend(name, pair) != null)
{
friend = checkFriend(name, pair);
}
在这里你无休止地做着同样的事情。