我想要制作的程序几乎已经完成,但是我遇到了表达式操作符的问题。我似乎无法正确表达它。我希望返回“整数关闭”,如果用一个数字2和3.我还希望数字1“远”与其他值相差2或更多。
例如
(1,2,10)→整数关闭
(5,1,9)→整数远
loop do
puts"enter each number then hit enter quit to end"
number1 = STDIN.gets
number1.chop!
number2 = STDIN.gets
number2.chop!
number3 = STDIN.gets
number3.chop!
numbers = [number1,number2,number3]
puts numbers.inspect
if number1 > number2 or number3 then
puts "Integers close"
end
if number2 < number3 then
puts"Integers far"
end
break if number1 == "quit"
end
答案 0 :(得分:2)
if number1 > number2 or number3 then
puts "Integers close"
end
这不是你想要的。每当true
或数字不为零时,这将评估为number1 > number2
(这是不可能的,因为它始终至少是空字符串。)作为一种风格问题,then
是不必要的
对于您的程序,如果用户想要退出,则不希望用户输入数字2和3。所以在第一个之后测试退出。重构会给你这样的东西:
loop do
puts "enter each number then hit enter quit to end"
number1 = STDIN.gets
number1.chomp!
exit if number1 == "quit"
number2 = STDIN.gets
number2.chomp!
number3 = STDIN.gets
number3.chomp!
numbers = [number1,number2,number3]
if number1 > number2 or number1 > number3
puts "Integers close"
elsif number2 < number3
puts"Integers far"
end
end
使用chomp
代替chop
,因为后者会随意删除最后一个字符,而前一个字符专门用于删除\n
和\r
。