Ruby: String Comparison Issues

ghz 1years ago ⋅ 1850 views

Question

I'm currently learning Ruby, and am enjoying most everything except a small string comparason issue.

answer = gets()

if (answer == "M")  
    print("Please enter how many numbers you'd like to multiply: ")   
elsif (answer. == "A")  
    print("Please enter how many numbers you'd like to sum: ")  
else  
    print("Invalid answer.")  
    print("\n")    
    return 0  
end

What I'm doing is I'm using gets() to test whether the user wants to multiply their input or add it (I've tested both functions; they work), which I later get with some more input functions and float translations (which also work).

What happens is that I enter A and I get "Invalid answer."The same happens with M.

What is happening here? (I've also used .eql? (sp), that returns bubcus as well)


Answer

gets returns the entire string entered, including the newline, so when they type "M" and press enter the string you get back is "M\n". To get rid of the trailing newline, use String#chomp, i.e replace your first line with answer = gets.chomp.