我的申请存在问题。
使用调试器我发现我的应用程序陷入无限循环。我附加了一个图像来演示当我尝试执行程序时发生的错误。
但是,在调试时我得出结论,这是我的CompareTo
方法或我的AVLTree类中的InsertItem
方法的问题。
该程序似乎围绕以下代码行循环 -
在我的Country
班级 -
public int CompareTo(object obj)
{
Country temp = (Country)obj;
return name.CompareTo(temp.name);
}
在我的AVLTree
课程中(没有通过我附上的代码) -
private void insertItem(T item, ref Node<T> tree)
{
if (tree == null)
{
tree = new Node<T>(item);
}
else if (item.CompareTo(tree.Data) < 0)
{
insertItem(item, ref tree.Left);
}
我正在读取CSV文件中的数据,但是,当应用程序读入CSV文件中的第四个条目时会发生这种情况。
我可以插入以下国家 - 美国,加拿大,巴西,但智利(下一个记录)似乎遇到了这个问题。我想知道问题可能是什么?
我用这段代码插入这些数据:
avlTree.InsertItem(new Country(columns[0], float.Parse(columns[1]), float.Parse(columns[2]), float.Parse(columns[3]), Int32.Parse(columns[4]), tradingPartners));
我有循环让贸易伙伴和代码在文件中读取,似乎无法摆脱这个循环。这个问题在哪里?
我有以下课程 -
AVLTree
BSTree
BinTree
Country
Node
Form
Program
感谢您的时间。
更新 - 我Country
方法的全部CompareTo
课程 -
private string name;
private float GDP;
private float inflation;
private float tradeBal;
private int HDI;
public LinkedList<String> tradingPartners;
public string x;
public Country()
{
}
public Country(string name, float GDP, float inflation, float tradeBal, int HDI, LinkedList<String> tradingPartners)
{
this.name = name;
this.GDP = GDP;
this.inflation = inflation;
this.tradeBal = tradeBal;
this.HDI = HDI;
this.tradingPartners = tradingPartners;
}
public string CountryName
{
get { return name; }
set { name = value; }
}
public float GDPGrowth
{
get { return GDP; }
set { GDP = value; }
}
public float Inflation
{
get { return inflation; }
set { inflation = value; }
}
public float TradeBalance
{
get { return tradeBal; }
set { tradeBal = value; }
}
public int HDIRank
{
get { return HDI; }
set { HDI = value; }
}
public LinkedList<String> TradingPartners
{
get { return tradingPartners; }
set { tradingPartners = value; }
}
public int CompareTo(object obj)
{
Country temp = (Country)obj;
return name.CompareTo(temp.name);
}
public override string ToString()
{
foreach (string y in TradingPartners)
{
x += y + ", ";
}
return name + ". " + GDP + ", " + inflation + ", " + tradeBal + ", " + HDI + "[ " + x + " ]";
}
我希望这会有所帮助,我不会像以前那样认为它是我的AVLTree而且没有出现任何问题。我忘记添加,代码会在我的CompareTo
和我的insertItem
方法之间不断循环播放(直到我将其粘贴到其中的位置,不会超出此范围)。