Переключить цикл и сопоставить ответы

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

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);

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

Нам нужно знать, как выглядит / выглядит data. Не могли бы вы опубликовать код для этого?

thesystem 01.05.2018 18:16
data.content и data.Content - две разные вещи. убедитесь, что вы правильно настраиваете и получаете content. Попробуйте отладить программу и проверьте поле содержимого перед оператором if.
Thatalent 01.05.2018 18:17

Проверьте наличие пробелов.

Harsh 01.05.2018 18:18

Придирка к терминологии: это не «петля переключателя», это «блок переключателя».

Blorgbeard 01.05.2018 18:18

data.Content. он получает вопрос с веб-сайта.

rami_ahmed 01.05.2018 18:21

@rami_ahmed, хорошо, а что такое тип, когда вы их получаете? объект?

thesystem 01.05.2018 18:23

@thesystem строка

rami_ahmed 01.05.2018 18:24

@rami_ahmed Если это уже строка, вам не нужно произносить data.Content, просто произносите data = "1. The word ..." и т. д., чтобы назначить вашу строку для data. Затем в вашем if-else скажите if (data.Contains(... - так что оставьте .Content, если это уже строка. Я почти уверен, что вы не можете использовать .Content на струне.

thesystem 01.05.2018 18:26

хорошо, но почему это дает мне ноль? он не входит в переключатель, потому что я определяю ответ на каждый вопрос

rami_ahmed 01.05.2018 18:28

@rami_ahmed, как вы определили ans и question? Покажите все его определение.

thesystem 01.05.2018 18:29

А как заливается question ?? И, самое главное, отладчиком пользовались? Это ваш лучший друг и гораздо более ценный, чем все, что SO мог бы предложить! Плюс: Куда пропал 1. ?

TaW 01.05.2018 18:30

публичная строка и {получить; набор; }

rami_ahmed 01.05.2018 18:30

@Taw он заполнен из (data.Content), который поступает с веб-сайта ..

rami_ahmed 01.05.2018 18:32

@rami_ahmed, мы нигде не можем увидеть, что вы назначаете question на data.Content. Как это выглядит? Нам нужно увидеть каждую важную часть кода :)

thesystem 01.05.2018 18:33

Пожалуйста, постарайтесь сосредоточиться на ТАК. Также постарайтесь ответить на все поставленные вам вопросы. Где сделал на 1. go?

TaW 01.05.2018 18:36

@rami_ahmed Я не могу сейчас говорить, но если вы дополните свой вопрос всем кодом, я посмотрю на него! :)

thesystem 01.05.2018 18:36
pastebin.com/pXBuRszb
rami_ahmed 01.05.2018 18:42

@Taw это не большая идея 1. Я могу удалить это, я просто скопировал / вставил вопрос о дыре

rami_ahmed 01.05.2018 18:43

Гм, что значит ?? Вам абсолютно необходимо опубликовать настоящий код. Если вы допустили ошибку, исправьте ее, иначе мы все увидим призрака. Также мы запросили только статус назначения question. Pastebin - еще один внешний ресурс.

TaW 01.05.2018 18:45

question = data.Content; # От (data.Content, у меня вопрос)

rami_ahmed 01.05.2018 18:50

@rami_ahmed хорошо, я посмотрел код. Допустим, дело обстоит так: «Слово« мужественный »означает что». Что вы хотите, чтобы произошло и что будет на выходе?

thesystem 01.05.2018 19:02

@rami_ahmed Думаю, я нашел вашу проблему и дал ответ. Посмотрите ниже, чтобы увидеть это. Я думаю, это потому, что ваша собственность ans - это null

thesystem 01.05.2018 19:16

Строка начинается с «1. Что означает слово« мужественный »?», но вы сравниваете с "Что означает слово" мужественный "?" Опечатка?

TaW 01.05.2018 19:17
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
23
75
1

Ответы 1

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

Когда вы создаете свойство вроде этого: 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 на "" вместо того, чтобы использовать его как свойство, заставила меня работать. Попробуйте и сообщите, если не сработает :)

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

rami_ahmed 02.05.2018 01:39

@rami_ahmed, хорошо, мне жаль это слышать. Если он пропускает переключатель, это потому, что ваш оператор if имеет значение false, что означает, что data.Content не содержит question. Поэтому я бы предположил, что data.Content равен нулю. Обновлено: Если вы можете опубликовать, как вы получаете data, то мы можем продолжить работу оттуда.

thesystem 02.05.2018 17:27

@rami_ahmed Обновлено: Либо data.Content не содержит question, либо ваши кейсы не соответствуют тому, что содержится в question. Вам нужен блок переключателей по умолчанию, который выполняется, если ни один из ваших случаев не совпадает.

thesystem 02.05.2018 18:22

Мне очень жаль, что я ответил позже data.Content, когда я его отлаживаю, он возвращает true в if-выражении. возможно, проблема, как вы сказали, в самом деле. хотя, когда я делаю это с помощью оператора if-else if. работает нормально. :(

rami_ahmed 03.05.2018 12:21

@rami_ahmed Не беспокойтесь о позднем ответе. Если он возвращает true в операторе if и отлично работает без оператора switch, значит, что-то не так с оператором switch и / или case! :-)

thesystem 03.05.2018 17:53

Привет . Я обнаружил проблему в упомянутых вами случаях. как я могу заставить его игнорировать пробелы и номер вопроса, чтобы случаи легко сопоставлялись

rami_ahmed 04.05.2018 04:55

@rami_ahmed Извините за поздний ответ. Приятно слышать, что ты это нашел. Я не совсем понимаю, что вы имеете в виду, не могли бы вы уточнить, что именно вы хотите?

thesystem 04.05.2018 21:27

Другие вопросы по теме