2012-06-17 2 views
0

Этот код работает для меня, за исключением того, что он проверяет только один дубликат, и если пользователь снова вводит одно и то же целое число, программа примет его во второй раз. Как заставить эту программу не принимать запись независимо от того, сколько раз пользователь вводит ее?Как принудительно дублировать запись?

 int[] shippedOrderNumbers = new int[5]; 

     Console.WriteLine("Please Input first Shipping Number: "); 
     shippedOrderNumbers[0] = Convert.ToInt32(Console.ReadLine());   

     Console.WriteLine("Please Input second Shipping Number: "); 
     shippedOrderNumbers[1] = Convert.ToInt32(Console.ReadLine());   


     if (shippedOrderNumbers[0] == shippedOrderNumbers[1]) 
     { 
      Console.WriteLine("A dublicate number is not allowed please try again: "); 
      shippedOrderNumbers[1] =Convert.ToInt32(Console.ReadLine());    
     }   

      Console.WriteLine("Please Input third Shipping Number: "); 
      shippedOrderNumbers[2] = Convert.ToInt32(Console.ReadLine()); 


     if (shippedOrderNumbers[0] == shippedOrderNumbers[2] || shippedOrderNumbers[1] == shippedOrderNumbers[2]) 
     { 
      Console.WriteLine("A dublicate number is not allowed please try again: "); 
      shippedOrderNumbers[2] = Convert.ToInt32(Console.ReadLine()); 
     }       
      Console.WriteLine("Please Input fourth Shipping Number: "); 
      shippedOrderNumbers[3] = onvert.ToInt32(Console.ReadLine());    


     if (shippedOrderNumbers[0] == shippedOrderNumbers[3] || shippedOrderNumbers[1] == shippedOrderNumbers[3] || shippedOrderNumbers[2] == shippedOrderNumbers[3]) 
     { 
      Console.WriteLine("A dublicate number is not allowed please try again: "); 
      shippedOrderNumbers[3] = Convert.ToInt32(Console.ReadLine()); 
     }       
      Console.WriteLine("Please Input fifth Shipping Number: "); 
      shippedOrderNumbers[4] = Convert.ToInt32(Console.ReadLine()); 


     if (shippedOrderNumbers[0] == shippedOrderNumbers[4] || shippedOrderNumbers[1] == shippedOrderNumbers[4] || shippedOrderNumbers[2] == shippedOrderNumbers[4] || shippedOrderNumbers[3] == shippedOrderNumbers[4]) 
     { 
      Console.WriteLine("A dublicate number is not allowed please try again: "); 
      shippedOrderNumbers[4] = Convert.ToInt32(Console.ReadLine()); 
     }   

ответ

3

Я думаю, вам лучше использовать общий список, а не массив. Вы также можете упростить код, используя простой цикл. Обратитесь к приведенному ниже примеру.

IList<int> shippedOrderNumbers = new List<int>(); 

for (int = 0; i < 5; i++) 
{ 
    Console.WriteLine("Please input the Shipping Number: "); 

    int shippingNumber; 
    if (!Int.TryParse(Console.ReadLine(), out shippingNumber) 
    { 
     Console.WriteLine("Your shipping number is not an integer"); 
    } 

    if (shippedOrderNumbers.Contains(shippingNumber)) 
    { 
     Console.WriteLine("This shipping number has already been entered."); 
    } 
    else 
    { 
     shippedOrderNumbers.Add(shippingNumber); 
     Console.WriteLine("Thanks for submitting your shipping number."); 
    } 
} 

PS. Я написал это в блокноте, так что может не работает, но должен дать вам общее руководство по устранению проблемы.

+0

THx человека, но если я просто изменить, если в то время как он будет делать эту работу для меня – user1462498

0

Что-то вдоль этих линий должны сделать это:

var shippedOrderNumbers = new List<int>(); 

var validOrderNumbers = 0; 

while(validOrderNumbers < 5) 
{ 
    Console.WriteLine("Input order number:"); 
    var nextOrderNumber = Convert.ToInt32(Console.ReadLine()); 
    if(shippedOrderNumbers.Any(son => son == nextOrderNumber)) 
    { 
     Console.WriteLine("Duplicate order number. Please enter another"); 
     continue; 
    } 
    shippedOrderNumbers.Add(nextOrderNumber); 
    validOrderNumbers++; 
} 
Смежные вопросы