Не удаётся ввести с клавиатуры в строковый элемент массива

135
12 июля 2018, 15:30

Хочу ввести с клавиатуры значения в строку, которая является элементом массива:string words[1]=Console.ReadLine(); Выдает ошибку, неудивительно. Расскажите как это сделать, и как вообще правильно делать массив строк в C#? Первый раз на C# пишу, не ругайтесь.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string str_eng = "Apple,Sky";
            string[] words = str_eng.Split(',');
            string str_rus = "Яблоко,Небо";
            string[] words1 = str_rus.Split(',');
            string words[1]=Console.ReadLine();
            Console.ReadKey();
        }
    }
}
Answer 1
void main()
{
    string[] words = {"one","two"};
    addEl(ref words);
}
void addEl(ref string[] mass)
{
    string newEl = Console.ReadLine();
    Array.Resize<string>(mass, mass.Length + 1);
    mass[mass.Length - 1] = newEl;
}

или

void main()
{
    List<string> str = new List<string>();
    addEl(str);
}   

void addEl(List<string> l)
{
    string newEl = Console.ReadLine();
    l.add(newEl);
}
Answer 2

Попробуйте этот код:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ru_stack_owerflow_CA1
{
    class Program
    {
        static void Main(string[] args)
        {
            const string strEn = "Apple,Sky";
            const string strRu = "Яблоко,Небо";
            List<string> wordsEngList = strEn.Split(',').ToList();
            List<string> wordsRuList = strRu.Split(',').ToList();
            Console.WriteLine("Enter you word: ");
            wordsEngList.Add(Console.ReadLine());
            foreach (string s in wordsEngList)
            {
                Console.WriteLine("wordsEngList: " + s);
            }
            foreach (string s in wordsRuList)
            {
                Console.WriteLine("wordsRuList: " + s);
            }
            Console.ReadKey();
        }
    }
}

И одна из рекомендаций, попробуйте ReShaper, он поможет вам выявить ошибки при обучении. Да и в дальнейшем дает разумные подсказки :) скачать можно на родном сайте www.jetbrains.com

Answer 3

Более прикладной вариант

class Program
{
    static void Main(string[] args)
    {
        string[] names = new string[3];
        //пока в массиве имен есть свободные позиции запрашиваем новые имена
        while (true)
        {
            //получение индекса в массиве где строка равна null
            int index = Array.IndexOf(names, null);
            //если индекс -1 значит массив заполнен => выходим из цикла
            if (index == -1) break;
            //присвоение имени, кот.ввели
            names[index] = GetNewName();
        }
        Console.WriteLine("Готово!");
        Console.WriteLine("-------");
        //проходим по массиву и к кажд. элементу применяем вывод на консоль
        Array.ForEach(names, Console.WriteLine);
        Console.ReadKey();
    }
    private static string GetNewName()
    {
        string result = String.Empty;
        //пока не введена строка или ключевое слово "выйти" просим ввести имя
        while (String.IsNullOrWhiteSpace(result)
            || String.IsNullOrEmpty(result) || result.Equals("выйти"))
        {
            Console.WriteLine("Введите имя: ");
            result = Console.ReadLine();
        }
        return result;
    }
}
READ ALSO
В чем суть ковариантности и контравариантности делегатов?

В чем суть ковариантности и контравариантности делегатов?

Изучаю по книге работу с делегатами и есть там пример, объясняющий, что такое ковариантность и контравариантностьРешил подробнее поискать...

260
C# противоречия в наследовании и инкапсуляции

C# противоречия в наследовании и инкапсуляции

Итак, имеется два класса: один родительский, второй дочерний

163
С# Увеличение числа в диапазоне

С# Увеличение числа в диапазоне

Есть два текстовых поля для ввода семизначного числа, где 1 поле: стартовое число, 2 поле: конечноеПодскажите, пожалуйста, как я могу получить...

129
Проблема с Binding

Проблема с Binding

Во время изменения фокуса из DataGrid на кнопку срабатывает обновление привязки у CurrentCell

184