當我嘗試輸出方法調用時,我得到一個空白屏幕,當我按任意鍵時,顯示命名空間,然後控制檯關閉。任何人都可以看到我在這裏失蹤的內容控制檯不會打印出我的方法中的信息
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace programming_2
{
class Driver
{
static void Main(string[] args)
{
fraction frac = new fraction(); // we'll get 0/1
frac = new fraction(1, 5); // we'll get 1/5
// frac = new fraction(25); // we'll get 25/1
//frac = new fraction(9.25); // we'll get 37/4
//frac = new fraction("6.25"); // we'll get 25/4
//frac = new fraction(System.Console.ReadLine());
Console.Write(frac);
// displays the current value of frac object;
Console.WriteLine("Press any key to continue..");
Console.ReadKey();
}
}
}
Fraction類
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace programming_assignment_2
{
class fraction : ICloneable, IEnumerable<fraction>, IEnumerator<fraction>, IComparer<fraction>
{
private int num, den;
// Constructors
public fraction()
{
Initialize(0, 1);
}
public fraction(int num)
{
CheckMinValue(num);
Initialize(num, 1);
}
public fraction(fraction f)
{
Initialize(f.num, f.den);
}
public fraction(int num, int den)
{
CheckDenominatorZero(den);
CheckMinValue(num);
CheckMinValue(den);
fraction f = new fraction((decimal)num, (decimal)den);
Initialize(f.num, f.den);
}
private static void CheckMinValue(int n)
{
if (n == int.MinValue)
throw new OverflowException();
}
private void Initialize(int num, int den)
{
this.num = num;
this.den = den;
}
private fraction(decimal r1, decimal r2)
{
decimal gcd = GCD(Math.Abs(r1), Math.Abs(r2));
int num = (int)(r1/gcd);
int den = (int)(r2/gcd);
CheckMinValue(num);
CheckMinValue(den);
if (r2 < 0)
{
num = -num;
den = -den;
}
this.num = num;
this.den = den;
}
public int Numerator
{
get { return this.num; }
}
public int Denominator
{
get { return this.den; }
}
// Overloaded Operators (+-*/^)
// Add
public static fraction operator +(fraction a, fraction b)
{
decimal d1 = (decimal)a.num * b.den + (decimal)b.num * a.den;
decimal d2 = (decimal)a.den * b.den;
return new fraction(d1, d2);
}
public static fraction operator +(fraction a, int b)
{
return a + new fraction(b);
}
public static fraction operator +(int a, fraction b)
{
return new fraction(a) + b;
}
// Substract
public static fraction operator -(fraction a, fraction b)
{
decimal r1 = (decimal)a.num * b.den - (decimal)b.num * a.den;
decimal r2 = (decimal)a.den * b.den;
return new fraction(r1, r2);
}
public static fraction operator -(fraction a, int b)
{
return a - new fraction(b);
}
public static fraction operator -(int a, fraction b)
{
return new fraction(a) - b;
}
// Multiply
public static fraction operator *(fraction a, fraction b)
{
decimal r1 = (decimal)a.num * b.num;
decimal r2 = (decimal)a.den * b.den;
return new fraction(r1, r2);
}
public static fraction operator *(fraction a, int b)
{
return a * new fraction(b);
}
public static fraction operator *(int a, fraction b)
{
return new fraction(a) * b;
}
// Divide
public static fraction operator /(fraction a, fraction b)
{
decimal r1 = (decimal)a.num * b.den;
decimal r2 = (decimal)a.den * b.num;
if (r2 == 0)
throw new DivideByZeroException();
else
return new fraction(r1, r2);
}
public static fraction operator /(fraction a, int b)
{
return a/new fraction(b);
}
public static fraction operator /(int a, fraction b)
{
return new fraction(a)/b;
}
// Exponents
public static fraction operator ^(fraction a, int n)
{
return new fraction((decimal)Math.Pow(a.num, n), (decimal)Math.Pow(a.den, n));
}
// Comparison operators
public static bool operator ==(fraction a, fraction b)
{
return (decimal)a.num * b.den == (decimal)b.num * a.den;
}
public static bool operator !=(fraction a, fraction b)
{
return (!(a == b));
}
public static bool operator >(fraction a, fraction b)
{
return (decimal)a.num * b.den > (decimal)b.num * a.den;
}
public static bool operator >=(fraction a, fraction b)
{
return (!(a < b));
}
public static bool operator <(fraction a, fraction b)
{
return (decimal)a.num * b.den < (decimal)b.num * a.den;
}
public static bool operator <=(fraction a, fraction b)
{
return (!(a > b));
}
public static decimal GCD(decimal a, decimal b)
{
if (b == 0)
return a;
return GCD(b, a % b);
}
private static void CheckDenominatorZero(decimal den)
{
if (den == 0)
throw new ArithmeticException("The denominator can't be zero!!");
}
}
}
你沒有調用任何'frac'對象的方法。更好地向我們展示「分數」類的定義。 – Hassan 2014-09-24 00:40:07
發佈'分數'類。 – 2014-09-24 00:42:03
另外,如果最初得到一個空白屏幕,這是因爲您正在執行一個'System.Console.ReadLine()'(目前已被註釋掉,但不能在運行該程序時),而不顯示任何內容屏幕首先使用'Console.WriteLine()'。 – 2014-09-24 00:43:47