通过克里斯派恩的学习编程和编号为罗马数字转换项目。下面的代码可以工作,但是如果(和结束)语句都很糟糕。但是,当我使用elsif程序不响应(似乎冻结)。任何想法都会有帮助!如何减少if语句?
def calc input
roman_numeral = ''
while true
if input >= 1000
roman_numeral += 'M' * (input/1000)
input = input - (1000 * (input/1000))
if input <= 999 || input >= 500
roman_numeral += 'D' * (input/500)
input = input - (500 * (input/500))
if input <= 499 || input >= 100
roman_numeral += 'C' * (input/100)
input = input - (100 * (input/100))
if input <= 99 || input >= 50
roman_numeral += 'L' * (input/50)
input = input - (50 * (input/50))
if input <= 49 || input >= 10
roman_numeral += 'X' * (input/10)
input = input - (10 * (input/10))
if input <= 9 || input >= 5
roman_numeral += 'V' * (input/5)
input = input - (5 * (input/5))
if input <= 4 || input >= 1
roman_numeral += 'I' * (input/1)
input = input - (1 * (input/1))
puts roman_numeral
break
end
end
end
end
end
end
end
end
end
puts 'Give me a number, any number:'
input = gets.chomp.to_i
calc(input)
情况下输入学习编程第二; 当1..4罗马数字+ = '我' *(输入/ 1); ... 当5..9罗马数字+ = 'V' *(输入/ 5); ... –