case
我正在使用语句将罗马数字转换为数字,反之亦然。我的案例通过检查我输入的是字符串还是整数来判断是真还是假。如果我输入 5,我应该得到 V,如果我输入 MI,应该得到 1000。我能够让我的“假”案例正常工作。但我无法让我的“真实”案例发挥作用。
我将 my 反转Roman_Numerals
为一个名为Arabic_Numerals
. 我不明白为什么我的true
案子没有像相反的那样奏效。
Roman_Numerals = {
"M" => 1000,
"D" => 500,
"C" => 100,
"L" => 50,
"X" => 10,
"V" => 5,
"I" => 1,
}
#Reverses the Roman Numerals and Arabic Numbers around in the Hash
#to look like 1000 => "M".
Arabic_Numberals = Hash[Roman_Numerals.to_a.reverse.reverse]
input = gets.chomp.upcase
def numeric?
Float(self) != nil rescue false
end
true_false = input.numeric?
#Looks for true or false from true_false variable. Then goes through
#the case to convert a roman numeral or a number.
case true_false
when false
#Converts a Roman Numeral to a Number
Roman_Numerals.each do |roman, value|
puts "#{roman}:#{value}"
if roman == input
puts "Answer: The Roman Numeral '#{input}' => #{value}."
break
else
next
end
end
#Converts a Number to a Roman Numeral
when true
Arabic_Numberals.each do |arabic, letter|
puts "#{letter}:#{arabic}"
puts "#{input}"
if input == arabic
puts "Answer: The Number '#{input}' => #{letter}"
break
else
puts "Why isn't this code working?"
next
end
end
end
请就我的false
案子为什么不起作用提出建议。我不确定为什么arabic == input
不起作用。