0

私が持っているものはすべて正常に動作しますが、注文番号が重複して入力された場合にユーザーにプロンプ​​トを表示し、新しい注文番号を再入力する方法を探しています。現在、重複を受け入れるだけで、必要なエラーメッセージは表示されません。Orderベースとなる2 つのクラスを作成しましたShippedOrderOrderこれが、クラス内にある equals メソッドです。

    public override bool Equals(Object e)
    {
        bool equal;
        Order temp = (Order)e;
        if (orderNumber == temp.orderNumber)
            equal = true;
        else
            equal = false;
        return equal; 

これが私がメインメソッド内に持っているものです。それが助けになるなら、私はすべてを投稿することができます。繰り返しますが、ユーザーフォームが同じ2つの注文番号を代入するのを防ぐ方法を見つける助けを探しています.

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());
4

2 に答える 2

0
List<ShippedOrder> orderArray = new List<ShippedOrder>();
do {
    int newOrderNum = 0;
    // Retrieve first attempt
    Console.Write("Enter order number: ");
    newOrderNUm = Conver.ToInt32(ConsoleReadLine());
    // Check if any of the orders in orderArray have the same order number
    while(orderArray.Any(a=>a.orderNumber == newOrderNum) {
        Console.Write("Sorry, the order number is a duplicate. Please enter re-enter the order number: ");
        newOrderNum = Conver.ToInt32(ConsoleReadLine());
    };
    orderArray.Add(new ShippedOrder() {
        orderNumber = newOrderNum,
    };
} while(orderArray.Length < 5);
于 2013-04-16T20:41:12.063 に答える