我正在嘗試創建一個需要用戶輸入的計算器。我希望該輸入不僅包括數字,還包括運營商(+
,-
,*
, /
)。我創建了一個與給定參數一起工作的方法。這是我的代碼:將操作員作爲用戶輸入的計算器
def calculator(x, y, z)
if y == '+'
ans = x + z
elsif y == '-'
ans = x - z
elsif y == '*'
ans = x * z
elsif y == '/'
ans = x/z
end
p ans
end
calculator(3, '+', 5)
calculator(4, '-', 2)
calculator(3, '*', 10)
calculator(21, '/', 7)
puts "Please enter your calculation"
user_calc = gets.chomp
user_calc.chars
user_calc[0].to_i
user_calc[4].to_i
calculator(user_calc[0], user_calc[2], user_calc[4])
該程序假設索引0
爲第一整數,指數2
操作者,和索引4
第二整數。
當我輸入3 + 5
時,輸出是35
而不是8
。其他操作(-
,*
,/
)返回nil
。當我嘗試使用用戶輸入時,我遇到了一個錯誤。我認爲它將數組中的所有內容視爲一個字符串。給定的參數按預期工作。但我無法完全確定用戶的輸入。
我想知道如何去解決這個問題。
謝謝阿馬丹。我明白了爲什麼我現在沒有得到正確的回報。 我一直在想多一點,而且我還有一個問題,我一直在努力解決。有沒有辦法將每個輸入(x,y,z)視爲自己的索引? 現在,即使我 user_calc.split('') ,每個字符被視爲自己的索引。所以,例如,5 + 95會返回5 + 9。我想知道如何以不同的方式拆分user_calc。 換句話說,我將如何得到100 5 + 95返回,而不是14。 – Orie
正如基斯說,正則表達式返回。 '_,arg1,op,arg2 = *「5 + 95」.match(/(\ d +)\ s *([ - + * \ /])\ s *(\ d +)/)'會提取兩個整數參數(作爲字符串,你仍然需要'to_i')和它們之間的操作符。 – Amadan