检查包含单词

时间:2016-08-25 19:03:16

标签: c++ arrays if-statement split

此应用程序相当简单,我没有收到任何错误或警告。 它只返回“Hello”这个词,而不会转到“Bill”这个词。它的工作原理是键入Hello和Bill。

研究: http://www.dotnetperls.com/split

https://msdn.microsoft.com/en-us/library/dy85x1sa(v=vs.110).aspx

https://msdn.microsoft.com/en-us/library/system.string.split(v=vs.110).aspx

任何提示或修正都会很棒!

       static void Main(string[] args)
    {
        //Varaibles and Condition Types
        string WordiIntitalString = Console.ReadLine();
        //outputs "hello bill"
        char[] delimiterChars = { ' ' };
        string[] WordArray = WordiIntitalString.Split(delimiterChars);
        foreach(var word in WordArray)
        {
            //Console.WriteLine(word);
            if (word.Equals("hello"))
            {
                Console.WriteLine(word);
                Thread.Sleep(1000);
                if (word.Contains("bill"))
                {
                    Console.WriteLine("jarvis");
                    Thread.Sleep(1000);
                }
            }
            Thread.Sleep(1000);
        }

包含试图在代码之上寻找分支。所以,如果你做了你好账单,那么它找到了分支机构。这个在我看来非常有效,但如果您对更好的方法有任何建议,我会赞赏评论!

3 个答案:

答案 0 :(得分:2)

您已嵌套if语句,条件相互矛盾。如果同一个词也满足word.Contains("bill"),则无法满足word.Equals("hello")

换句话说,如果word进入第一个if,它也可能进入第二个Console.WriteLine("jarvis")。这意味着永远无法访问您的命令if

除了嵌套if (word.Equals("hello")) { Console.WriteLine(word); Thread.Sleep(1000); } else if (word.Contains("bill")) // <-- key change is here { Console.WriteLine("jarvis"); Thread.Sleep(1000); } Thread.Sleep(1000); 之外,您可能打算在替代方案中进行嵌套:

from sqlalchemy import cast, String

markers = session.query(Markers) \
        .filter(cast(Markers.lat, String()).like('%' + data['lat'] + '%')) 

答案 1 :(得分:0)

你已经嵌套了我的朋友

ComputeWordScore

答案 2 :(得分:0)

内部if条件永远不会运行。在第一个循环中,你会得到“你好”这个词。并执行外部if条件中的代码。在第二个循环中,我们有&#39; bill&#39;而外部if条件忽略了这一点,因此内部if条件永远不会运行。请尝试这样做:(放置在每个循环内部)

if (word.Equals("hello"))
{
    Console.WriteLine(word);
    Thread.Sleep(1000);
} 
else if (word.Contains("bill"))
{
    Console.WriteLine("jarvis");
    Thread.Sleep(1000);
}
else
{
    Thread.Sleep(1000);
}