Ma méthode ne peut pas passer le test unitaire. Je l'ai regardé pendant 5 heures en vain. Quelqu'un pourrait-il m'aider à voir ce qui ne va pas? PS: la méthode getAllRelations() dans mon code ci-dessous consiste à séparer les entrées formatées en listes de tableaux de ArrayList de chaînes, par exemple, si j'ai une entrée formatée comme ceci (je l'ai utilisée dans mon cas de test qui ne pouvait pas t pass)Arbre généalogique ancêtre trouver algorithme
String format = "John Doe , Mary Smith" + "\n" + "Brian William , John Doe" + "\n" + "Brian William ,Robert Andrew" + "\n" + "Mary Smith , Max Jackson";
Dans chaque ligne, la première personne est le parent de la deuxième personne. La méthode getAllRelations() divisera ces chaînes formatées en listes arithmétiques que chaque liste contient uniquement les deux chaînes de noms (sans espace après ou avant les noms) dans chaque ligne en tant qu'éléments. par exemple arraylist1 sera une liste contenant "John" et "Mary Smith".
Voici mes méthodes que je ne pouvais pas comprendre ce qui ne va pas, je veux utiliser cette méthode pour vérifier si deux personnes partagent le même ancêtre.
private boolean hasSameAncestor(String person1, String person2){
ArrayList<ArrayList<String>> allRelations = allRelations();
int i = 0;
int j = 0;
String name1 = person1;
String name2 = person2;
String parent1;
String parent2;
for(i = 0, parent1 = ""; i < allRelations.size(); i++){
if(name1.equals(allRelations.get(i).get(1))){
parent1 = allRelations.get(i).get(0);
for(j = 0, name2 = person2, parent2 = ""; j < allRelations.size(); j++){
if(name2.equals(allRelations.get(j).get(1))){
parent2 = allRelations.get(j).get(0);
if(parent2.equals(parent1)){
return true;
}
else{
name2 = parent2;
j = 0;
}
}
}
name1 = parent1;
i = 0;
}
}
return false;
}
Mon test qui ne peut pas passer est comme ça.
@Test
public void testHasSameAncestor()
FamilyTree familyTree4 = new FamilyTree("John Doe , Mary Smith" + "\n" + "Brian William , John Doe" + "\n" + "Brian William ,Robert Andrew" + "\n" + "Mary Smith , Max Jackson");
assertEquals(true, format.hasSameAncestor("Max Jackson", "Robert Andrew"));
}
Je ne peux pas comprendre ce qui ne va pas avec ma fonction, quelqu'un pourrait-il me aider? Merci beaucoup.
code qui pourrait coller à éclipser pour le débogage aide
package test;
import java.util.ArrayList;
import java.util.Arrays;
public class Test1 {
String test;
public Test1(String test){
this.test = test;
}
private ArrayList<String> lineRelations(){
int i;
ArrayList<String> lineRelations = new ArrayList<String>();
String[] lines = test.split("\n");
for(i = 0; i < lines.length; i++){
lineRelations.add(lines[i]);
}
return lineRelations;
}
private ArrayList<ArrayList<String>> allRelations(){
int i;
ArrayList<ArrayList<String>> allRelations = new ArrayList<ArrayList<String>>();
ArrayList<String> lineRelations = lineRelations();
for(i = 0; i < lineRelations.size(); i++){
ArrayList<String> eachLine = new ArrayList<String>(Arrays.asList(lineRelations.get(i).split("\\s*,\\s*")));
allRelations.add(eachLine);
}
return allRelations;
}
public boolean hasSameAncestor(String person1, String person2){
ArrayList<ArrayList<String>> allRelations = allRelations();
int i = 0;
int j = 0;
String name1 = person1;
String name2 = person2;
String parent1;
String parent2;
for(i = 0, parent1 = ""; i < allRelations.size(); i++){
if(name1.equals(allRelations.get(i).get(1))){
parent1 = allRelations.get(i).get(0);
for(j = 0, name2 = person2, parent2 = ""; j < allRelations.size(); j++){
if(name2.equals(allRelations.get(j).get(1))){
parent2 = allRelations.get(j).get(0);
if(parent2.equals(parent1)){
return true;
}
else{
name2 = parent2;
j = 0;
}
}
}
name1 = parent1;
i = 0;
}
}
return false;
}
}
cas de test
package test;
import static org.junit.Assert.*;
import test.Test1;
import org.junit.Test;
public class Test1Test {
@Test
public void testHasSameAncestor(){
Test1 test1 = new Test1("John Doe , Mary Smith" + "\n" + "Brian William , John Doe" + "\n" + "Brian William ,Robert Andrew" + "\n" + "Mary Smith , Max Jackson");
assertEquals(true, test1.hasSameAncestor("Max Jackson", "Robert Andrew"));
}
}
Qu'est-ce qui ne va pas? Avez-vous réussi à l'exécuter? Avez-vous eu une erreur? Mettez quelques debug stmts et voir la sortie – mtk
pourquoi êtes-vous si fâché ... Je veux juste obtenir de l'aide .. Je l'ai couru. Et le test unitaire m'a indiqué que le résultat réel est faux plutôt qu'escompté vrai ... le débogage ne montre rien de significatif pour moi cependant ... donc je ne peux pas comprendre pourquoi – user1835156
Donnez la méthode allRelations() ou un exemple de données qui retournent AllRelations() Peut-être que la méthode allRelations() a des bugs? –