我试图建立一个程序来解决任何问题。这就是我的所作所为:
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);
问题在于它显示" null"作为答案,因为它不会进入开关循环。有什么帮助吗?
答案 0 :(得分:0)
我认为这是问题,但是评论太长了......如果不是答案,我会删除。
当您创建这样的属性时: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
设置为""
而不是将其作为属性使其适用于我。尝试并报告它是否无效:)