Java递归问题

时间:2017-04-02 15:34:41

标签: java recursion

我们说我的数据集是

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错误。



任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您不使用递归,因为方法调用本身无处可去。 我想你的问题出在你的循环中:

while (checkFriend(name, pair) != null)
{
    friend = checkFriend(name, pair);
}

在这里你无休止地做着同样的事情。