2016-04-02 6 views
-2

Я хочу объявить пустой массив, который принимает входные данные от пользователя, а затем найдет длину этого массива. Я объявил пустой массив, но не знаю, как принимать данные от пользователя.Найти размер неизвестного размера массив

+1

Вам необходимо [редактировать] (http://stackoverflow.com/posts/36368337/edit) ваше сообщение, чтобы включить то, что вы сделали как мы не видим ваш экран. –

+1

Пустой массив не может принимать входные данные и не может иметь длину больше 0. Разверните свой вопрос, покажите нам какой-то код, возможно, мы сможем помочь. – Corey

+1

Массивы имеют фиксированный размер - при необходимости вы можете перераспределить больше памяти, но проще использовать «Список », который может динамически расти (хотя и перераспределять массив за кулисами). В этом случае свойство 'Count' даст вам количество элементов в коллекции. –

ответ

0

Вот пример того, что вы просили: https://dotnetfiddle.net/1RSPzs

using System; 

public class Program 
{ 
    public static void Main() 
    { 
     var index = 0; 
     var myArray = new string[] {}; 
     var isEmptyText = false; 
     do 
     { 
      Console.Write("Give me some input or press enter to quit: "); 
      var result = Console.ReadLine(); 
      isEmptyText = string.IsNullOrWhiteSpace(result); 
      if (!isEmptyText) 
      { 
       if (myArray.Length <= index) 
       { 
        Array.Resize(ref myArray, index+1); 
       } 

       myArray[index++] = result; 
      } 
     } while (!isEmptyText); 

     Console.WriteLine(myArray.Length); 
     Console.WriteLine(string.Join(", ", myArray)); 
    } 
} 

Хотя этот код работает, то изменение размера массива постоянно что является дорогостоящей процедурой. Я бы посоветовал дать ему разумное количество предметов, и при необходимости их размер только изменился. Как это:

using System; 

public class Program 
{ 
    public static void Main() 
    { 
     var index = 0; 
     var myArray = new string[25]; 
     var isEmptyText = false; 
     do 
     { 
      Console.Write("Give me some input or press enter to quit: "); 
      var result = Console.ReadLine(); 
      isEmptyText = string.IsNullOrWhiteSpace(result); 
      if (!isEmptyText) 
      { 
       if (myArray.Length <= index) 
       { 
        Array.Resize(ref myArray, myArray.Length + 10); 
       } 

       myArray[index++] = result; 
      } 
     } while (!isEmptyText); 

     Console.WriteLine(myArray.Length); 
     for (var i=0; i < index; i++) 
     { 
      Console.Write((i==0 ? "" : ", ") + myArray[i]); 
     } 
    } 
} 

Конечно, самое лучшее, что нужно сделать, это использовать более современные структуры данных, как связанные списки или векторы, но иногда мы получаем эти задания в школе и должны понять это. Ознакомьтесь с обобщенными коллекциями для самых простых структур данных, которые будут работать с C#: http://www.csharp-station.com/Tutorial/CSharp/Lesson20

+0

Спасибо komma8.komma1, это сработало для меня. – Bushra

+0

Возможно, вы новичок в переполнении стека, поэтому в будущем попробуйте показать, что вы пробовали (код), а также включите в свои вопросы немного больше деталей. Затем, как только у вас появится ответ на ваш вопрос (например, мой пост), вы отметите ответ, чтобы люди не продолжали тратить на него время, думая, что он все еще открыт и остается без ответа. –

Смежные вопросы