所以我试图用分数类作为数组对分数进行排序。即使我认为我的操作员也有问题,我无法测试它,因为我给出的输出总是覆盖整个数组的最后一个数字,我真的不知道是什么导致了这个。
主要类:(排除排序方法)
int denominator;
int numerator;
public int denominator
{
get { return denominator; }
set { denominator= value; }
}
public int numerator
{
get { return numerator; }
set { numerator= value; }
}
public static bool operator <(Fraction left, Fraction right)
{
var diff = left.denominator* right.numerator- right.numerator* left.denominator;
return diff < 0;
}
public static bool operator >(Fraction left, Fraction right)
{
var difference= left.denominator* right.numerator- right.numerator* left.denominator;
return !(difference> 0);
}
public override String ToString()
{
return String.Format("{0} {1}", this.denominator, this.numerator);
}
这是分数类:
getcwd()
我甚至无法测试我的操作符(从未使用过,直到现在),无论它们是否正常工作,因为数组错误。有任何建议如何找到错误?
答案 0 :(得分:1)
问题出在你的for
循环中。您总是一遍又一遍地编辑同一个Fraction
对象(并且您的数组中填充了同一对象的副本)。
更改代码以在循环的每次迭代中实例化新的Fraction
:
for (int i = 0; i < m; i++)
{
string o = Console.ReadLine();
string[] split2 = o.Split(' ');
denominator= Int32.Parse(split2[0]);
numerator= Int32.Parse(split2[1]);
var fraction = new Fraction(); // Added line
fraction.denominator= denominator;
fraction.numerator= numerator;
frac[i] = fraction;//put the numbers in the array
}