我的程序從外部文本文件中獲取數據,並將這些數據放入一個名稱列表以及數字中。這些數字代表了友誼(即,如果在索引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);
}
}
}
}
}
}
}
尋求調試幫助的問題(「爲什麼這個代碼不工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現問題所需的最短代碼。沒有明確問題陳述的問題對其他讀者無益。 –
「包含所需的行爲」:這意味着您需要提供正在使用的數據和您期望的實際輸出。 –
@ScottHunter謝謝你澄清。對不起,誤解。我剛剛用以下信息更新了這個問題 – Oluwatosin