How come this If sentence doesnt work?
-
I cant get it right... why this doesnt work :S:S
string b = "3.12312123";
if ((b[0] == '2' || b[0] == '3' || b[0] == '4' || b[0] == '5') && ((textBox2.Text != "703") || (textBox2.Text != "733")))
{
this.Text = "OK";
}
else
{
this.Text = "NOT OK!";}
Any ideas?
Regards, Matjaž
[Message Deleted]
-
I can't be sure what you mean by not working, but that condition will always be true because of this:
((textBox2.Text != "703") || (textBox2.Text != "733"))
The textBox2 text will never be equal to both 703 and 733. As an aside, you seem to be doing number comparisons, so I would recommend using number variables instead of strings. You could then test (b >= 2 && b < 6)Okeeei... So, i want to check... if its enetered only 703 or 733... BESIDES that the b starts with 2,3,4 or 5. I really dont know how to make this thing to work... maybe i jsut have a bad day and am a bit confused... but yet again... i dont understand it Please help? :/
Regards, Matjaž
-
[Message Deleted]
Hi, if you don't understand why a statement behaves the way it does, then the only good advice is to write simpler statements. Why do you insist on putting everything in a single line? Chop it into smaller pieces and look at the intermediate values, that will help you understand if and how it works. As for the 703/733 thing, as all the others already told you, that cannot possibly be what you intended. For what value do you think it will evaluate to false? :)
Luc Pattyn [Forum Guidelines] [My Articles]
Fixturized forever. :confused:
-
Hi, if you don't understand why a statement behaves the way it does, then the only good advice is to write simpler statements. Why do you insist on putting everything in a single line? Chop it into smaller pieces and look at the intermediate values, that will help you understand if and how it works. As for the 703/733 thing, as all the others already told you, that cannot possibly be what you intended. For what value do you think it will evaluate to false? :)
Luc Pattyn [Forum Guidelines] [My Articles]
Fixturized forever. :confused:
Well, my intention was ... If the first character of the string was 2,3,4 or 5 the it should also check the textbox if there is entered any of the two mentioned values (703 or 733). Ok, looking at it this way... maybe it could work with two ifs...
Regards, Matjaž
-
Well, my intention was ... If the first character of the string was 2,3,4 or 5 the it should also check the textbox if there is entered any of the two mentioned values (703 or 733). Ok, looking at it this way... maybe it could work with two ifs...
Regards, Matjaž
if (b\[0\] == '2' || b\[0\] == '3' || b\[0\] == '4' || b\[0\] == '5') if((textBox2.Text != "703") || (textBox2.Text != "733")) { this.Text = "OK"; } else { this.Text = "NI OK!"; }
ok... this doesnt work either:S
Regards, Matjaž
-
if (b\[0\] == '2' || b\[0\] == '3' || b\[0\] == '4' || b\[0\] == '5') if((textBox2.Text != "703") || (textBox2.Text != "733")) { this.Text = "OK"; } else { this.Text = "NI OK!"; }
ok... this doesnt work either:S
Regards, Matjaž
Matjaž Grahek wrote:
((textBox2.Text != "703") || (textBox2.Text != "733"))
Guy, for the last time, this will ALWAYS evaluate to True. How about change that "or" to an "and"??
if ((textbox2.Text != "703") && (textbox2.Text != "733"))
A guide to posting questions on CodeProject[^]
Dave Kreskowiak Microsoft MVP Visual Developer - Visual Basic
2006, 2007, 2008 -
if (b\[0\] == '2' || b\[0\] == '3' || b\[0\] == '4' || b\[0\] == '5') if((textBox2.Text != "703") || (textBox2.Text != "733")) { this.Text = "OK"; } else { this.Text = "NI OK!"; }
ok... this doesnt work either:S
Regards, Matjaž
It doesn't work because you haven't changed the logic. Scott P.
"Simplicity carried to the extreme becomes elegance."
-Jon Franklin -
I cant get it right... why this doesnt work :S:S
string b = "3.12312123";
if ((b[0] == '2' || b[0] == '3' || b[0] == '4' || b[0] == '5') && ((textBox2.Text != "703") || (textBox2.Text != "733")))
{
this.Text = "OK";
}
else
{
this.Text = "NOT OK!";}
Any ideas?
Regards, Matjaž
class Program { static void Main(string[] args) { string b = "3.12312123"; if ((b[0] == '2' || b[0] == '3' || b[0] == '4' || b[0] == '5') && ((args[0] == "703") || (args[0]== "733"))) { Console.WriteLine("OK"); } else { Console.WriteLine("NOT OK!"); } } }
Merry Christmas."Simplicity carried to the extreme becomes elegance."
-Jon Franklin -
Okeeei... So, i want to check... if its enetered only 703 or 733... BESIDES that the b starts with 2,3,4 or 5. I really dont know how to make this thing to work... maybe i jsut have a bad day and am a bit confused... but yet again... i dont understand it Please help? :/
Regards, Matjaž
Matjaž Grahek wrote:
i want to check... if its enetered only 703 or 733
I have no idea what the condition is. a) Do you want this.text = "OK" if text = 703 or 733? b) or do you want this.text = "Not Ok!" if text = 703 or 733?
int textVal = 0;
int.tryparse(textbox2.text, out textVal);if(textVal == 703 || textVal==733)
{
this.Text = "ok"; // Case 'a'
this.Text = "Not Ok"; // Case 'b'
}Matjaž Grahek wrote:
b starts with 2,3,4 or 5
here is a simple solution to that:
int val = 0;
int.tryparse(b[0].ToString(), out val)this should help, Prateek
-
I cant get it right... why this doesnt work :S:S
string b = "3.12312123";
if ((b[0] == '2' || b[0] == '3' || b[0] == '4' || b[0] == '5') && ((textBox2.Text != "703") || (textBox2.Text != "733")))
{
this.Text = "OK";
}
else
{
this.Text = "NOT OK!";}
Any ideas?
Regards, Matjaž
Your problem displays the most common failure of beginning programmers -- mixing their 'AND' and their 'OR' logic. You also need to think of how to address your other requirement that the text begin with 2,3,4, or 5. A possible solution is first to write what you want out in text if b starts with a valid number and textbox contains valid numbers then it's ok. That leads to code such as this:
string b = "3.12321212";
List<char> validValues = new List<char> { '2', '3', '4', '5' };
List<string> validInput = new List<string> { "703", "733" };textbox1.Text = "Not OK";
if ( validValues.Contains( b[0] ) && validInput.Contains( texbox.Text ) )
{
textbox1.Text = "OK";
}Another way you can also address this problem is with RegEx but I don't have the time to figure out the pattern.
-
I cant get it right... why this doesnt work :S:S
string b = "3.12312123";
if ((b[0] == '2' || b[0] == '3' || b[0] == '4' || b[0] == '5') && ((textBox2.Text != "703") || (textBox2.Text != "733")))
{
this.Text = "OK";
}
else
{
this.Text = "NOT OK!";}
Any ideas?
Regards, Matjaž
Ok... thank you all for your answers. Will try this tommorow. Again, thanks for your patience and the will to help. Good night
Regards, Matjaž