Snowy_Panther Ответов: 3

Как добавить в массив с пользовательским вводом?


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

Что я уже пробовал:

using System;
public class Practice
{

    static void Main()
    {
        int x=0; //num of words
        string[] str = new string[x];
        string ec = "not q"; //exit clause
        for(x=0; ec != "q"; x++)
        {
            str[x] = Console.ReadLine();
            ec = Console.ReadLine();

        }
    }

    

}

Karthik_Mahalingam

каковы ваши точные требования и проблема, с которой вы столкнулись?
ваш вопрос и код кажутся разными.

Snowy_Panther

Я пытаюсь добавить строки в массив с помощью консольного ввода. Я еще не добрался до распечатки из массива.

Karthik_Mahalingam

см. приведенный ниже пример.

Snowy_Panther

Хорошо, так это то, что я придумал:

<pre>using System;public class Practice{     static void Main()    {         int a = int.Parse(Console.ReadLine()); //amount of words        string[] array = new string[a];        for(int b=0;b<a; b++)        {            array[b] = Console.ReadLine();        }        Console.WriteLine("Press any key to continue...");        Console.ReadKey();        for(int b=0; b< array.Length; b++)        {            Console.WriteLine(array[b]);        }        Console.ReadKey();      }


У меня все еще есть вопрос. В моем случае, если вы введете нужное количество строк, вы получите это количество строк. Разве это не должно быть еще одним, так как C# начинает считать с 0?

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

3 Ответов

Рейтинг:
23

Mathew Soji

В C#, когда вы объявляете массив, вы должны указать его размер; в приведенном выше коде вы должны инициализировать свой массив до некоторого размера .

string[] str = new string[10];


Когда вы вводите массив с нулевым размером, он создает пустой объект массива .

Здесь я инициализирую массив размером 10 .и в цикле for, возможно, вы можете проверить длину массива и на основе проверки объявить новый массив нужного размера и скопировать содержимое исходного массива в новый массив.

Опять же, есть встроенные методы, такие как Array.Resize .
Array. Resize (T) Method (T [], Int32) (System)[^]


Рейтинг:
19

Karthik_Mahalingam

Цитата:
Я пытаюсь добавить строки в массив с помощью консольного ввода. Я еще не добрался до распечатки из массива.

обратитесь к этому простому примеру

System.Console.WriteLine("Enter 5 words");
       string[] array = new string[5];
       for (int i = 0; i < 5; i++)
       {
           array[i] = System.Console.ReadLine(); // read the line and stores in array
       }
       System.Console.WriteLine("press any key to print words");
       System.Console.ReadLine();
       foreach (string item in array)
       {
           System.Console.WriteLine(item);  // print each item from the array
       }
       System.Console.ReadLine();


Рейтинг:
12

CPallini

Почему бы вам не воспользоваться List а вместо этого?
Напр.

public static void Main()
{
  List<string> strlist = new List<string>();
  string str;
  while (true)
  {
    Console.WriteLine("please enter a string ('q' to exit");
    str = Console.ReadLine();
    if (str == "q") break;
    strlist.Add(str);
  }

  Console.WriteLine("Entered string count = {0}", strlist.Count);
  foreach (string s in strlist)
  {
    Console.WriteLine(s);
  }
}