我所有的一切運行良好,但我正在尋找一種方式來提示用戶,如果重複的訂單號碼被輸入,並讓他們重新輸入一個新的訂單號碼。現在它只接受重複項,並不顯示我想要的錯誤信息。我創建了兩個類Order
的基地,和ShippedOrder
。這裏是我在Order
課程中的等號方法。防止重複的號碼,並要求用戶重新進入
public override bool Equals(Object e)
{
bool equal;
Order temp = (Order)e;
if (orderNumber == temp.orderNumber)
equal = true;
else
equal = false;
return equal;
這是我在主要方法中的內容。我可以發佈一切,如果它會幫助。再次,我正在尋找幫助,找到一種方法來防止用戶輸入相同的兩個訂單號碼。
static void Main(string[] args)
{
double sum = 0;
ShippedOrder[] orderArray = new ShippedOrder[5];
ShippedOrder[] check = new ShippedOrder[5];
bool wrong = true;
for (int x = 0; x < orderArray.Length; ++x)
{
orderArray[x] = new ShippedOrder();
Console.Write("Enter order number: ");
orderArray[x].orderNumber = Convert.ToInt32(Console.ReadLine());
for (int y = 0; y < x; ++y)
{
check[y] = new ShippedOrder();
if (orderArray[x].Equals(check[y]))
wrong = false;
while (!wrong)
{
Console.WriteLine("Sorry, the order number {0} is a duplicate. \nPlease reenter {1}",
orderArray[x], check[y]);
for (y = 0; y < x; ++y)
{
if (orderArray[x].Equals(check[y]))
wrong = false;
}
check[y] = orderArray[x];
}
}
Console.Write("Enter cusomer name: ");
orderArray[x].customerName = Console.ReadLine();
Console.Write("Enter quanity: ");
orderArray[x].quanityOrdered = Convert.ToInt32(Console.ReadLine());
在你的第二個'for'循環中,你正在檢查一個新的ShippedOrder對象,這個對象可能沒有ID。當你把它與'x'比較時,沒有匹配。 –
最簡單的方法是將您的orderarray從ShippedOrder []類型更改爲List類型。然後你可以在輸入循環中使用orderarray.Contains(ShippedOrder newOrder)。 –
Ben313
我同意問題是檢查[y]沒有價值我只是不知道如何給它一個值,而不會使它等於orderArray [x],它只是導致無限循環,或者看起來等於零。我需要找到一種方法來使檢查[y]等於所有以前的用戶輸入。我也不太熟悉List類型。我們還沒有在課堂上講過這個。我認爲這是我的教授想要完成的方式,所以我希望用這種方式來達到正確的結果。 –
Evan