2014-01-08 68 views
0

在下面我的代碼,它應該執行以下任務:錯誤:類不包含定義,並沒有擴展方法

提示用戶爲每個訂單值。不要讓重複的訂單號碼;強制用戶在輸入重複訂單號時重新輸入訂單。當輸入五個有效訂單時,將其全部顯示,再加上全部訂單。

的問題是,有它的錯誤。我試圖自己解決錯誤,但我無法修復它。我一直陷在這些錯誤中好幾個小時。還有一件事,我真的不能明白爲什麼它會顯示OrderDemo不包含總,訂單編號,客戶和數量的定義。任何幫助將非常感謝。謝謝!

using System; 

class OrderDemo 
{ 

    public static void Main() 
    { 
     OrderDemo[] order = new OrderDemo[5]; 
     int x, y; 
     double grandTotal = 0; 
     bool goodNum; 
     for (x = 0; x < order.Length; ++x) 
     { 
      order[x] = new Order(); //OrderDemo.Order does not contain a constructor that takes 0 arguments 
      Console.Write("Enter order number"); 
      order[x].OrderNumber = Convert.ToInt32(Console.ReadLine()); 
      goodNum = true; 
      for (y = 0; y < x; ++y) 
      { 
       if (order[x].Equals(order[y])) 
        goodNum = false; 
      } 
      while (!goodNum) 
      { 
       Console.Write("sorry, the order number " + order[x].OrderNumber + "is a duplicate. " + "\nPlease reenter: "); 
       order[x].OrderNumber = Convert.ToInt32(Console.ReadLine());//OrderDemo does not contain a definition for OrderNumber and no extension.. 
       goodNum = true; 
       for (y = 0; y > x; ++y) 
       { 
        if (order[x].Equals(order[y])) 
         goodNum = false; 
       } 
      } 
      Console.Write("Enter customer name"); 
      order[x].Customer = Console.ReadLine();//OrderDemo does not contain a definition for Customer and no extension.. 
      Console.Write("Enter Quantity"); 
      order[x].Quantity = Convert.ToInt32(Console.ReadLine());//OrderDemo does not contain a definition for Quantity and no extension.. 
     } 

     Console.WriteLine("\nSummary\n"); 
     for (x = 0; x < order.Length; ++x) 
     { 
      Console.WriteLine(order[x].ToString()); 
      grandTotal += order[x].Total; //OrderDemo does not contain a definition for Total and no extension.. 
     } 
     Console.WriteLine(" Total for all orders is" + grandTotal.ToString("c")); 

    } 

    public class Order 
    { 
     public int orderNum; 
     public string cusName; 
     public int quantity; 
     public double total; 
     public const double ItemPrice = 19.95; 

     public Order(int ordNum, string cusName, int numOrdered) 
     { 
      OrderNum = ordNum; 
      Customer = cusName; 
      Quantity = numOrdered; 
     } 

     public int OrderNum 
     { 
      get { return orderNum; } 
      set { orderNum = value; } 
     } 
     public string Customer 
     { 
      get { return cusName; } 
      set { cusName = value; } 
     } 
     public int Quantity 
     { 
      get 
      { 
       return quantity; 
      } 
      set 
      { 
       quantity = value; 
       total = quantity * ItemPrice; 
      } 
     } 
     public double Total 
     { 
      get 
      { 
       return total; 
      } 
     } 
     public override string ToString() 
     { 
      return ("Order " + OrderNum + " " + Customer + " " + Quantity + 
       " @Php" + ItemPrice.ToString("0.00") + " each. " + "The total is Php" + Total.ToString("0.00")); 
     } 

     public override bool Equals(Object e) 
     { 
      bool equal; 
      Order temp = (Order)e; 
      if (OrderNum == temp.OrderNum) 
       equal = true; 
      else 
       equal = false; 
      return equal; 
     } 
     public override int GetHashCode() 
     { 
      return OrderNum; 
     } 
    } 
} 
+0

'爲了[X] =新訂單();'不不行,因爲'order'是'OrderDemo []'不是'令[]'。如果你自己提供了一個參數,你還需要'Order'中的無參數構造函數。否則,你不能使用它。 –

回答

0

只要您未定義接受參數的其他構造函數,C#就會爲您提供默認構造函數。因爲你有這個:

public Order(int ordNum, string cusName, int numOrdered) 
{ 
    OrderNum = ordNum; 
    Customer = cusName; 
    Quantity = numOrdered; 
} 

未生成默認的構造函數。您需要添加:

public Order() { } 

...如果您想創建對象而不傳遞參數給它。

此外,作爲SLaks指出,聲明瞭您的陣列錯誤:

OrderDemo[] order = new OrderDemo[5]; 

應該是這個:

var order = new Order[5]; // or Order[] order = new Order[5]; 
+0

非常感謝您的幫助!我的程序現在工作正常:) – user3103939

1

你聲明你的數組包含OrderDemo對象。
正如錯誤中明確規定,OrderDemo沒有任何屬性。

你大概的意思Order,這是一個不同的類。

+0

+1,打我吧我的朋友! –

相關問題