Переключить цикл и соответствующие ответы - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь построить программу для решения любого вопроса. Вот что я сделал:

data.content = "1. The word 'virile' means what?\na. Like a rabbit\nb. Like a man\nc. Like a wolf\nd. Like a horse\n" # I'm defining the question here.

Вот код для определения ответа на вопрос, который мы определили:

if (data.Content.Contains(question))
        {
            switch (question)
            {
                case "The word 'virile' means what?":
                    ans = " Like a man ";
                    break;
                case "is he a man ?":
                    ans = "No";
                    break;
                case "Can you speak ?":
                    ans = "hello";
                    break;

Теперь для решающей части:

var inputSplit = data.Content.Split(new string[] { "\n" }, StringSplitOptions.RemoveEmptyEntries);
theanswer = new string(inputSplit.Where(x => x.Contains(ans)).Select(x => x[0]).ToArray()[0], 1);
Reply(theanswer);

Проблема в том, что в качестве ответа отображается «ноль», потому что он не входит в цикл переключения. Любая помощь?

1 Ответ

0 голосов
/ 01 мая 2018

Я думаю, что это проблема, но это слишком долго, чтобы быть комментарием ... Я удалю, если это не ответ.

Когда вы создаете свойство, подобное этому: public string ans { get; set; }, вы ничего не устанавливаете для него, поэтому ans на самом деле null.

Это вызывает проблему во второй последней строке: theanswer = new string(inputSplit.Where(x => x.Contains(ans)).Select(x => x[0]).ToArray()[0], 1);. В середине этой строки вы проверяете, если ... x.Contains(ans)).

Если вы измените public string ans { get; set; } на public string ans = "", он никогда не будет null в любой точке.

Я не знаю, является ли мое объяснение полностью правильным, но установка ans на "" вместо того, чтобы использовать его как свойство, заставила его работать на меня. Попробуйте и сообщите, если это не сработает :)

...