Добавление гибких номеров вопросов в вопросы - PullRequest
0 голосов
/ 18 июня 2020

(Извините за странный заголовок вопроса, я действительно не знаю, как это описать)

Я провожу тест для оценки, это довольно простая сделка с несколькими вариантами ответов. Моя проблема проистекает из одного из требований оценки, которое гласит, что вы должны иметь возможность добавлять / удалять вопросы в список и из него. Вопросы легко удаляются, но индекс вопроса записывается так:

questions.Add("Q1: What is not recyclable among these options?\n1. Batteries\n2. Aluminum cans\n3. Glass\n4. Paper");

Очевидно, что в этом нет ничего плохого, но после добавления списка становится немного странно. или удалил несколько вопросов. Я хочу, чтобы номер вопроса отображался в самом вопросе и корректировал номера вопросов для удаления определенного вопроса. Поэтому, если у меня есть 5 вопросов (Q1, Q2, Q3, Q4 и Q5), и я удаляю вопрос 4, он удалит вопрос и напечатает номера оставшихся вопросов соответственно (Q1, Q2, Q3 и Q4, где Q4 - тот же вопрос, что и Q5 до того, как Q4 был удален). Звучит довольно сложно, но, честно говоря, это все, что мне нужно. Примерно так, где qn представляет собой номер вопроса:

questions.Add("Q"+qn+": Here");
questions.Add("Q"+qn+": There");
questions.Add("Q"+qn+": Everywhere");
Console.WriteLine(questions);
// Remove question two
questions.Add("Q"+qn+": Here");
questions.Add("Q"+qn+": Everywhere");
Console.WriteLine(questions);

Output:

Q1: Here
Q2: There
Q3: Everywhere

// Q2 gets removed

Q1: Here
Q2: Everywhere

1 Ответ

2 голосов
/ 18 июня 2020

Одно из возможных решений - НЕ сохранить часть "Q1" с вопросом и просто использовать index вопроса в списке, когда вы хотите отобразить вопросы.

Например:

// We don't store the question number with the question
var questions = new List<string> {"Here", "There", "Everywhere"};

for (int i = 0; i < questions.Count; i++)
{
    // Instead we write the question numbers as we print the list
    Console.WriteLine($"Q{i + 1}: {questions[i]}");
}

Console.WriteLine("\nRemoving question #2...\n");
questions.RemoveAt(1);

for (int i = 0; i < questions.Count; i++)
{
    Console.WriteLine($"Q{i + 1}: {questions[i]}");
}

Выход

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...