-1
所以我試圖用分數類作爲數組排序分數。即使我認爲我的操作符也有些問題,但我無法測試它,因爲我給出的輸出始終是覆蓋整個數組的最後一個數字,我不知道是什麼導致了這種情況。如何防止最後一個數字覆蓋數組?
主類:(不包括排序方法)
int m;
int n; static Fraction fraction = new Fraction();//edited
int denominator;
int numerator;
Fraction[] frac;//fraction
string l = Console.ReadLine();
string[] split = l.Split(' ');
m = Int32.Parse(split[0]);
n = Int32.Parse(split[1]);
frac = new Fraction[m];
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]);
fraction.denominator= denominator;
fraction.numerator= numerator;
frac[i] = fraction;//put the numbers in the
//array
}
if (m < n)
SelectionSort(frac);
else
QuickSort(frac, 0, m - 1);
for (int i =0; i< m; i++)
{
Console.WriteLine(frac[i]);
}
這是分數等級:
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);
}
我甚至不能測試我的運營商(從未使用直到現在)是否由於數組錯誤,所以正在工作或沒有工作。任何建議如何找到錯誤?
您的代碼是沒有意義的。 「分數」在哪裏申報? –
對不起,我忘了在代碼中添加,但部分是在聲明的主類中:static Fraction fraction = new Fraction(); 我會在代碼中加入 – nate
爲什麼你聲明它是靜態的? –