2012-03-31 3 views
1

내 프로그램은 거의 완성되었지만 표현 연산자와 문제가 있습니다. 올바른 표현이 아닌 것 같습니다. 나는 숫자 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

if number1> number2 || number1> number3 then ... ' –

+0

'quit'을 마지막으로 테스트하는 것은 의미가 없다는 경고가 있습니다. –

+0

차이점을 확인하고 있지 않습니다. 뺄셈을해야합니다. 또한 당신의 설명에서, * 모든 숫자가 2 이상 차이가 나면 "far"라고보고 할 것인지, 아니면 처음과 다른 것을 비교할 것인가에 대해 명확하지 않습니다. –

답변

2
if number1 > number2 or number3 then 
     puts "Integers close" 
    end 

number1 > number2 또는 숫자가 전무되지 않을 때마다 당신이 (이.이 true로 평가됩니다 할 일을하지 않습니다 그것은 불가능하기 때문에 스타일은 항상 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을 제거하도록 설계하는 동안 : 리팩토링은 당신이 뭔가를 줄 것이다.

관련 문제