2015-03-24 2 views
0

Я работаю над приложением, в котором пользователь выбирает, сколько целых чисел нужно вводить в массив, а затем вводит числа, которые нужно добавить в массив. После ввода каждого номера он показывает все недвоичные целые числа, введенные пользователем до этой точки в вертикальном списке. Если он не уникален, он информирует пользователя о том, что он уже введен.(C#) Как перечислить все введенные пользователем целые числа в массиве?

Я не уверен, как сделать список приложений целым числом, а не только последним.

Вот мой код:

static void Main(string[] args) 
{ 
    //checks how many numbers will be entered 
    int manyNumbers; 
    Console.WriteLine("How many numbers will you enter?"); 
    manyNumbers = Convert.ToInt32(Console.ReadLine()); 
    int[] array = new int[manyNumbers]; 
    //starts asking for numbers 
    for (int i = 0; i < manyNumbers;) 
    { 
     Console.Write("\nEnter number: "); 
     string entered = Console.ReadLine(); 
     int val; 
     //checks to see if valid number 
     if (!Int32.TryParse(entered, out val)) 
     { 
      Console.Write("Invalid number '{0}'", entered); 
      array[i++] = val; 
     } 
     //checks to see if already entered 
     else if (i > 0 && array.Take(i).Contains(val)) 
     { 
      Console.Write("{0} has already been entered", val); 
      array[i++] = val; 
     } 
     //prints inputted integer 
     else { 
      array[i++] = val; 
      Console.WriteLine("{0}", val); 
     } 
    } 
} 

ответ

1

Просто перебираем массив до сих пор печать каждого.

Прости мой мобильный сконструированный код, но более или менее это:

//prints inputted integer 
else { 
     array[i++] = val; 
     for(int j=0 ; j<i;j++) { 
      Console.WriteLine("{0}", array[j]); 
     } 
} 
+0

I попробовал ваш код, но он не печатает никаких целых чисел. Может ли быть ошибка где-то? –

+0

Я сожалею, набрал его на своем телефоне. Умело проверять петлю. Должно быть j Tim

+0

Спасибо. Это работает намного лучше, но есть ли способ избежать отображения дубликатов в печатных целых числах, не удаляя их из массива? –

0

очень простой подход, попробуйте одно из следующих действий:

for(var x=0;x<array.length;x++) 

или

foreach(var i in array) 

Но ваш использование кейс, использование HashSet data structure

Mathematically, Set - это уникальный список вещей.

-1

попробуйте этот код, он использует словарь, чтобы сохранить список в памяти и поиск, чтобы увидеть, если было добавлено целое число,

using System.Collections.Generic; 
static void Main(string[] args) 
    { 

     //checks how many numbers will be entered 
     int manyNumbers; 
     Console.WriteLine("How many numbers will you enter?"); 
     manyNumbers = Convert.ToInt32(Console.ReadLine()); 

     Dictionary<int, int> array = new Dictionary<int, int>(); 

     //starts asking for numbers 
     for (int i = 0; i < manyNumbers;) 
     { 
      Console.Write("\nEnter number: "); 
      string entered = Console.ReadLine(); 
      int val; 

      //checks to see if valid number 
      if (!Int32.TryParse(entered, out val)) 
      { 
       Console.Write("Invalid number '{0}'", entered); 
      } 
      //checks to see if already entered 
      else 
      if (i > 0 && array.ContainsKey(val)) 
      { 
       Console.Write("{0} has already been entered", val); 
       //array[i++] = val; 
      } 
      else 
      { 
       //* add the new integer to list 
       array.Add(val, 0); 

       //prints the complete list 
       List<int> keys = new List<int>(array.Keys); 
       Console.WriteLine(); 
       for(int j=0; j<keys.Count; j++) Console.WriteLine(keys[j]); 
      }       




     } 

    } 
+0

Это способ усложнить ситуацию, и хотя список, вероятно, будет небольшим, это действительно неэффективно. – Tim

0

Вы можете использовать foreach рамочной

foreach(int num in array) 
{ 
    Console.WriteLine("{0}", num); 
} 
Смежные вопросы