I'm not sure if I'm just really tired and missing something obvious or there is something wrong with my program. Basically my if statement condition is not working.
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;
}
I'm passing in the string 0001010110 and im getting an output of:
0 0
0 1
0 1
0 1
1 0
but no "activated" or "false" even though the last one is "1 0". Again sorry if this is a dumb question and any insight or help would be greatly appreciated.
You're comparing a char against an int. The check you're attempting carries a completely different meaning than what you're trying to accomplish. You need to either check if its equal to '1' or cast the char to an int first so you can do a numeric comparison.
if (nextvaluebinary[i] == '1')
Since nextvaluebinary
is a String
, this comparison will succeed only if that string has a null character, ie '\\0'
:
if (nextvaluebinary[i + 1] == 0)
It looks like you are looking for a zero digit character, instead, so you should write
if (nextvaluebinary[i + 1] == '0')
Equals is used with char to int. So that will use char code.
Use this
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;
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.