dipankarnalui Ответов: 2

Как принять tupple input в C#?


как я могу принять ввод кортежа C#.NET?

это 3 кортежа ниже

Испания Англия 3 0
Англия Франция 1 1
Испания Франция 0 2

я хочу принять N входных кортежей во время выполнения.
один кортеж содержит 4 элемента.
пункт 1 = строка
пункт 2 = строка
пункт 3= int
пункт 4= int

я хочу взять время выполнения ввода кортежа - ("Испания", "Англия", 3, 0)

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

Tuple<string,string,int,int> tuple = new Tuple<string, string, int, int>("Spain", "England", 3, 0);

          for (int i = 0; i <m; i++)
           {
              Console.ReadLine(tuple.Item1,tuple.Item2,tuple.Item3,tuple.Item4);
          }

2 Ответов

Рейтинг:
1

BillWoodruff

Иметь в виду: [^].

Цитата:
Класс Tuple сам по себе не представляет кортеж. Вместо этого это класс, предоставляющий статические методы для создания экземпляров типов кортежей, поддерживаемых платформой .NET Framework. Он предоставляет вспомогательные методы, которые можно вызвать для создания экземпляров объектов кортежа без необходимости явно указывать тип каждого компонента кортежа.
Кортеж.Метод Create можно использовать (до восьми параметров), чтобы упростить создание кортежа и сэкономить ваши пальцы на наборе текста:
var matchScoreTuple = Tuple.Create("Spain", "England", 3, 0);
Если вы хотите, чтобы пользователь ввел каждую группу данных, которая станет кортежем, в одну строку в консоли:
private char[] splitChars = new[] {','};
int s1, s2;

string matchResult = Console.ReadLine();

string[] matchData = matchResult.Split(splitChars, StringSplitOptions.RemoveEmptyEntries);

if (matchData.Length != 4)
{
    Console.WriteLine("string, string, int, int separated by commas required");
}
else
{
    if(
        Int32.TryParse(matchData[2], out s1)
        &&
        Int32.TryParse(matchData[3], out s2)
    )
    {
        var match = Tuple.Create(
            matchData[0],
            matchData[1],
            matchData[2],
            matchData[3]
        );

        // now do something with the Tuple
    }
    else
    {
        Console.WriteLine("error in integer entry values");
    }
}
Примечание: конечно, это неполный код, вы, вероятно, хотели бы иметь цикл, в котором пользователь мог бы ввести несколько результатов совпадения, и вы хотели бы сохранить допустимые кортежи, которые вы создаете ... где-то.


Karthik_Mahalingam

5! что делать, если строка содержит запятую :)

BillWoodruff

Ваш пост обет проголосовал #4 :)

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

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

Знаете ли вы какие-нибудь названия спортивных команд, которые содержат запятые ? :)

Рейтинг:
1

Karthik_Mahalingam

попробуй вот так

Tuple<string, string, int, int> tuple = new Tuple<string, string, int, int>(Console.ReadLine(), Console.ReadLine(), int.Parse( Console.ReadLine()),int.Parse( Console.ReadLine()));


tupple предметы есть только для чтения , Он может быть инициализирован только при создании объекта кортежа, как только объект создан, элементы не могут быть изменены.

более эффективный способ:

string item1 = Console.ReadLine();
        string item2 = Console.ReadLine();
        int item3, item4;
        int.TryParse(Console.ReadLine(), out item3);
        int.TryParse(Console.ReadLine(), out item4); 
        Tuple<string, string, int, int> tuple = new Tuple<string, string, int, int>(item1, item2, item3, item4);


обновляется на основе обсуждения законопроекта

    Console.WriteLine("Please enter item1: string ");
    string item1 = Console.ReadLine();
    Console.WriteLine("Please enter item2: string ");
    string item2 = Console.ReadLine();
    int item3, item4;
i3: Console.WriteLine("Please enter item3: integer ");
    if (!int.TryParse(Console.ReadLine(), out item3))
    {
        Console.WriteLine("InValid integer value ");
        goto i3;
    }
i4: Console.WriteLine("Please enter item4: integer ");
    if (!int.TryParse(Console.ReadLine(), out item4))
    {
        Console.WriteLine("InValid integer value ");
        goto i4;
    }

    Tuple<string, string, int, int> tuple = new Tuple<string, string, int, int>(item1, item2, item3, item4);
    Console.WriteLine("Your tuple is => {0},{1},{2},{3}",tuple.Item1,tuple.Item2,tuple.Item3,tuple.Item4);
    Console.ReadLine();


BillWoodruff

+4

Karthik_Mahalingam

да, Билл, поправил