如果声明不起作用C#

时间:2015-07-21 18:16:12

标签: c#

我不确定我是否真的很累,错过了一些明显的东西,或者我的程序出了什么问题。基本上我的if语句条件不起作用。

public bool check(string nextvaluebinary)
        {
            bool test = true;

            for (int i = -1; i < 8; ++i)
            {
                i++;
                System.Console.WriteLine(nextvaluebinary[i] + " " + nextvaluebinary[i + 1]);
                if (nextvaluebinary[i] == 1)
                {
                    System.Console.WriteLine("Activated");
                    if (nextvaluebinary[i + 1] == 0)
                    {
                        test = false;
                        System.Console.WriteLine("false");
                    }
                }
                else
                {
                    test = true;
                }

                if (test == false)
                {
                    break;
                }
            }

            return test;
        }

我传入字符串0001010110并获得输出:

0 0
0 1
0 1
0 1
1 0

但没有&#34;已激活&#34;或&#34;假&#34;即使最后一个是&#34; 1 0&#34;。再次抱歉,如果这是一个愚蠢的问题,任何见解或帮助将不胜感激。

3 个答案:

答案 0 :(得分:10)

您正在将char与int进行比较。你正在尝试的检查带有与你想要完成的完全不同的含义。你需要检查它是否等于'1'或者首先将char转换为int,这样你才能进行数值比较。

if (nextvaluebinary[i] == '1')

答案 1 :(得分:2)

由于nextvaluebinaryString,只有当该字符串具有空字符时,此比较才会成功,即'\0'

if (nextvaluebinary[i + 1] == 0)

看起来你正在寻找零数字字符,所以你应该写

if (nextvaluebinary[i + 1] == '0')

答案 2 :(得分:0)

Equals与char一起用于int。所以这将使用字符代码。

使用此

    public static bool check(string nextvaluebinary)
    {
        bool test = true;

        for (int i = -1; i < 8; ++i)
        {
            i++;
            System.Console.WriteLine(nextvaluebinary[i] + " " + nextvaluebinary[i + 1]);
            if (nextvaluebinary[i] == '1')
            {
                System.Console.WriteLine("Activated");
                if (nextvaluebinary[i + 1] == '0')
                {
                    test = false;
                    System.Console.WriteLine("false");
                }
            }
            else
            {
                test = true;
            }

            if (test == false)
            {
                break;
            }
        }

        return test;
    }