我不确定我是否真的很累,错过了一些明显的东西,或者我的程序出了什么问题。基本上我的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;。再次抱歉,如果这是一个愚蠢的问题,任何见解或帮助将不胜感激。
答案 0 :(得分:10)
您正在将char与int进行比较。你正在尝试的检查带有与你想要完成的完全不同的含义。你需要检查它是否等于'1'或者首先将char转换为int,这样你才能进行数值比较。
if (nextvaluebinary[i] == '1')
答案 1 :(得分:2)
由于nextvaluebinary
是String
,只有当该字符串具有空字符时,此比较才会成功,即'\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;
}