Wagner Ответов: 2

Укажите количество строк для ввода в консоль


Вот пример ввода, который я хочу:

Ввод:
2
1 2 3 4
3 2 5 1

Вывод: xxx имеет самую большую сумму.

Две строки ввода
1 2 3 4
и
3 2 5 1
представьте себе каждого человека, и я хочу вывести, у кого из них самая большая сумма. В этом примере у второго человека самая большая сумма. Число "2" в первой строке ввода представляет, сколько строк вменения я хочу ввести. Поэтому, если я наберу 3, я хочу ввести сумму для 3 разных людей.

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

Я так и не смог этого понять. Я могу ввести только бесконечное количество строк, но это не совсем то, что я хочу. Вот что у меня есть:

string line;
            while ((line = Console.ReadLine()) != null)
            {
                string[] split = line.Split(new char[] { ' ' }, StringSplitOptions.None);
                long a1 = Int64.Parse(split[0]), b1 = Int64.Parse(split[1]), a2 = Int64.Parse(split[2]), b2 = Int64.Parse(split[3]);

                Console.ReadLine();
            }

2 Ответов

Рейтинг:
2

RickZeeland

Вы можете использовать цикл while следующим образом:

while (true)
{
    string line = Console.ReadLine();

    if (string.IsNullOrEmpty(line))
        break;

    Console.WriteLine(line);
}

Или:
string line;

do
{
    line = Console.ReadLine();
    Console.WriteLine(line);
}
while (!string.IsNullOrEmpty(line));


Wagner

Хотя это не совсем то, чего я хочу, не знаю, поняли ли вы мой вопрос. Первый ввод - это количество строк, которые я хочу написать. Например, если я пишу "2", я хочу ввести две строки кода, прежде чем получить результат. Поэтому после того, как я наберу "2", я хочу написать 4 числа в одной строке, а затем снова 4 числа в другой строке и вывести, какая из строк имеет наибольшую сумму, если это имеет смысл.

RickZeeland

Просто хотел отметить, что ваша проверка на null, вероятно, не работает, поэтому просто используйте строку.Функция IsNullOrEmpty ().

Рейтинг:
1

phil.o

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

int count;
while (!int.TryParse(Console.ReadLine(), out count)); // Execute until a valid integer is provided
int i = 0;
while (i < count) {
   // your line input and parsing here
}

Надеюсь, это поможет. Любезно.


Wagner

Я думаю, что теперь понимаю, как указать количество строк, но если мы пойдем с моим примером в оригинальном комментарии, как я могу напечатать, какая из строк чисел имеет наибольшую сумму, если мы приписываем одну строку человеку по имени Джон, а другую - человеку по имени Сара? Я не знаю, какой подход использовать.

phil.o

"как я могу напечатать, какая из строк чисел имеет наибольшую сумму?"
Вы должны хранить эту информацию где-то. Например, массив, содержащий элементы "count".

"если мы приписываем одну строку человеку по имени Джон, а другую - человеку по имени Сара"
Тогда вы должны попросить эту информацию в первую очередь. Затем вы можете иметь 2 массива, каждый из которых имеет элементы "count": первый массив будет содержать имена, а второй-результат суммы. Сумма при индексе 0 во втором массиве будет соответствовать имени при индексе 0 в первом массиве. Это только одна из возможностей, есть и другие, но эта подойдет.

Wagner

Не могли бы вы привести пример? Что вы подразумеваете под подсчетом элементов?

phil.o

Массив, который имеет ровно count элементы, count это имя переменной, которую я написал в коде, который привел вам в качестве примера.