2017-04-09 87 views
-3

我的程序從外部文本文件中獲取數據,並將這些數據放入一個名稱列表以及數字中。這些數字代表了友誼(即,如果在索引2處有一個人爲1,這意味着這個人是名字人物的朋友)。從這裏開始,它應該取一個名字並顯示這個人的直接身份朋友是,然後顯示間接的朋友(間接的朋友是朋友的朋友)。我目前的問題是,我的程序顯示間接,但我不確定如何將它發送到我的基地,如果陳述打印直接的朋友。如果任何人可以擺脫一些將不勝感激的光。遞歸朋友混淆

釷名稱陣列中的數據(字符串):[ 「史密斯」, 「亞當斯」, 「管家」, 「斯坦」, 「曼凱爾」, 「Yorst」]

數字陣列中的數據(字符串): [ 「000010」, 「001001」, 「01000」, 「000010」, 「100100」, 「010000」]

我叫史密斯的方法(directFriends( 「史密斯」,姓名,號碼, 1)

我得到這個對於出地說:

史密斯的間接友:

曼凱爾是史密斯朋友

曼凱爾是朋友斯坦

我所需的輸出是:

史密斯是朋友曼凱爾

史密斯的間接友:

曼克爾是史密斯的朋友

Mankell是朋友斯坦

public class AllFriends { 



public static void directFriends(String name,String[]names,String[]numbers, int num){ 
ArrayList<String> indirect = new ArrayList<String>(); 

if (num==0){ 
    for (int i=0;i<names.length;i++){ 
     if(names[i].equalsIgnoreCase(name)){ 
      for(int j=0;j<numbers[i].length();j++){ 
       if(numbers[i].charAt(j)=='1'){ 
        System.out.println(name+" is friends with "+names[j]); 
       } 
      } 
     } 
    } 
} 
else 
    //Go through names array 
    for (int i=0;i<names.length;i++){ 
     //To see if name entered is the same as a name from the list 
     if(names[i].equalsIgnoreCase(name)){ 
      //For each character in the individual number String 
      for(int j=0;j<numbers[i].length();j++){ 
       //Check if it's a 1(Friends) 
       if(numbers[i].charAt(j)=='1'){ 
        //Then add this friend to the group of people needed to be friend searched 
        indirect.add(names[j]); 
        //If 
        if(j==numbers[i].lastIndexOf("1")) { 

         for(int f=0;f<indirect.size();f++){ 
          System.out.println("Indirect Friends of "+name+":"); 
          num--; 
          directFriends(indirect.get(f),names,numbers,num); 

         } 
        } 

       } 
      } 
     } 
    } 
} 
+1

尋求調試幫助的問題(「爲什麼這個代碼不工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現問題所需的最短代碼。沒有明確問題陳述的問題對其他讀者無益。 –

+0

「包含所需的行爲」:這意味着您需要提供正在使用的數據和您期望的實際輸出。 –

+0

@ScottHunter謝謝你澄清。對不起,誤解。我剛剛用以下信息更新了這個問題 – Oluwatosin

回答

0

其實我得到它的人誰是好奇,在這裏工作是我的解決方案我所要做的就是重新秩序,我最後else語句添加一行for循環:

public class AllFriends { 



public static void directFriends(String name,String[]names,String[]numbers, int num){ 
ArrayList<String> indirect = new ArrayList<String>(); 

if (num==0){ 
    for (int i=0;i<names.length;i++){ 
     if(names[i].equalsIgnoreCase(name)){ 
      for(int j=0;j<numbers[i].length();j++){ 
       if(numbers[i].charAt(j)=='1'){ 
        System.out.println(name+" is friends with "+names[j]); 
       } 
      } 
     } 
    } 
} 
else 
    //Go through names array 
    for (int i=0;i<names.length;i++){ 
     //To see if name entered is the same as a name from the list 
     if(names[i].equalsIgnoreCase(name)){ 
      //For each character in the individual number String 
      for(int j=0;j<numbers[i].length();j++){ 
       //Check if it's a 1(Friends) 
       if(numbers[i].charAt(j)=='1'){ 
        //Then add this friend to the group of people needed to be friend searched 
        indirect.add(names[j]);//New stuff 
        //If 
        if(j==numbers[i].lastIndexOf("1")) { 

         for(int f=0;f<indirect.size();f++){ 
          num--; 
          **directFriends(name,names,numbers,num); 
          System.out.println("Indirect Friends of "+name+":"); 
          directFriends(indirect.get(f),names,numbers,num);** 

         } 
        } 

       } 
      } 
     } 
    } 
}