How to use not equal and or

ingresa = gets.chomp
               ingresa = ingresa.downcase
   if ingresa !="sum"||ingresa !="sub"||ingresa !="mul"||ingresa !="div"
          puts"You didn't type [Sum,Sub,Mul,Div]"
          puts"Try again."
   end

Hi to everyone, I'm a newbie with ruby and I don't know what I doing
wrong with my code, i want to make a simple calculator just for training
so what I want to do is to make sure that the user receives a message
that he didn't type sum, sub, mul or div to start the calculator, the
other part is finished and working but I don't know how to solve this,
could you help me with this issue and explain me a little my mistake.
thank you!

···

--
Posted via http://www.ruby-forum.com/.

I believe your logic is wrong here. You want to check if one of "sum",
"sub", "mul", or "div" is your input, which would indicate that your
logic should be:

if ingresa != "sum" && ingresa != "sub" && ingresa != "mul" && ingresa != "div"
  puts "You didn't type [Sum,Sub,Mul,Div]"
  puts "Try again."
end

You could also take advantage of the #include? method on the Array class:

unless ["sum", "sub", "mul", "div"].include?(ingresa)
  puts "You didn't type [Sum,Sub,Mul,Div]"
  puts "Try again."
end

Hope this helps

···

On Fri, Aug 2, 2013 at 1:55 PM, Jesus Avila <lists@ruby-forum.com> wrote:

ingresa = gets.chomp
               ingresa = ingresa.downcase
   if ingresa !="sum"||ingresa !="sub"||ingresa !="mul"||ingresa !="div"
          puts"You didn't type [Sum,Sub,Mul,Div]"
          puts"Try again."
   end

Hi to everyone, I'm a newbie with ruby and I don't know what I doing
wrong with my code, i want to make a simple calculator just for training
so what I want to do is to make sure that the user receives a message
that he didn't type sum, sub, mul or div to start the calculator, the
other part is finished and working but I don't know how to solve this,
could you help me with this issue and explain me a little my mistake.
thank you!

--
Matt

ingresa = gets.chomp
               ingresa = ingresa.downcase

BTW, a tip: you can combine these two as "ingresa = gets.chomp.downcase". :slight_smile:

   if ingresa !="sum"||ingresa !="sub"||ingresa !="mul"||ingresa !="div"

Close!

Sounds it out in English. "If it's not sum, or it's not sub, or it's
not mul, or it's not div". Or in my probably-bad Spanish (which I'm
guessing might be your first language), "Si no esta sum, o no esta
sub, o no esta mul, o no esta div". Doesn't that just sound logically
wrong to you, even in human-language? Now, think about what small
change would make the logic correct, in human-language. Or, just how
you would say it, in human. Then make that change in Ruby.

Alternately, you could do something like "if it's sum, add them, else
if it's sub, subtract, else if it's mul, multiply, else if it's div,
divide, else complain". You could do that with an if-elsif-else
chain, or a case statement, which is a very common way of acting on
one of several options.

Lastly, another general tip: your code would be more legible, and
possibly easier for you to edit, with spaces in it, like so:

    if ingresa != "sum" || ingresa != "sub" || ingresa != "mul" ||
ingresa != "div"

-Dave

···

On Fri, Aug 2, 2013 at 2:55 PM, Jesus Avila <lists@ruby-forum.com> wrote:

--
Dave Aronson, the T. Rex of Codosaurus LLC,
secret-cleared freelance software developer
taking contracts in or near NoVa or remote.
See information at http://www.Codosaur.us/\.

Ok I got it, Thanks Matt and Dave, also I liked the tip that combine
methods, and the include? method, and I will use spaces to read code
better. thanks again!!

···

--
Posted via http://www.ruby-forum.com/.