2012-12-18 2 views
0

저는 프로그래밍에 처음이고 Ruby는 제 첫 번째 언어입니다. 내가 일하고 있어요 하나의 운동을 수행하는 곱셈 테이블을 만드는 것입니다 다음 나는를 실행하면시간표 - Ruby의 Fizzbuzz 유형 질문

a = 1 
b = 1 

while a <= 5 
    while b <= 5 
     puts "#{a} * #{b} = #{a * b}" 

     b += 1 
    end 
    a += 1 
end 

:

1x1 = 1 
1x2 = 2 
(etc) 
2x1 = 2 
2x2 = 4 

은 내가 중첩 된 while 루프를 작성하여이 작업을 수행 할 거라고 생각 스크립트는 첫 번째 시간 집합 테이블 (1x1 - 1x5)을 인쇄 한 다음 중지합니다. 부모 루프를 반복하지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

2

b1으로 재설정하지 않았습니다. 두 번째 while 루프 봐 :

while b <= 5: 
    ... 
    b += 1 
이 루프, b = 6의 끝에서

및 루프 종료. 그런 다음 a += 1이 실행되고 외부 루프가 시작됩니다. 그러나 다음 번 내부 루프 반복에서는 b = 6이므로 실행되지 않습니다. 따라서 다음이 필요합니다 당신이 초보자있어

... 
end 
a += 1 
b = 1 
+0

그것은 그것이 나에게 표시되어 사용자들은 이제 너무 간단 보인다. 응답 해 주셔서 감사합니다. –

4

당신의 상태는 그래서 while 루프 지금은 괜찮습니다. 그러나 프로그래밍과 Ruby 기술을 모두 향상 시키면 더 많은 관용구 코드를 작성할 수 있습니다. 그 라인에있는 어떤 것 :

+0

안녕하세요 @tokland. 응답 해 주셔서 감사합니다. 네, 저는 초심자입니다. 나는 당신의 코드를 이해하려고 노력하고있다. 이 내용을 올바르게 읽었 으면 알려주세요. 1-5 범위의 어레이가 1-5 범위의 다른 어레이에 의해 곱해지고 있습니다. 그런 다음 배열 값이 x 및 y 변수로 매핑됩니다. 마지막으로 \ n을 추가하여 각 줄을 반환합니다. 그것은 당신이 쓴 것을 올바르게 해석 한 것입니까? –

+0

또 다른 질문인데 왜 'puts'를 사용할 때 .join ("\ n")이 필요합니까? –

+0

연구를 수행 한 후 제품 (배열)이 내가 가정 한대로 곱셈되지 않지만 배열 값의 모든 조합을 반환합니다. 다시 한 번 감사드립니다! –

0

받아 들인 대답에서 설명하는 "부기 오류"는 쉽게 만들 수 있습니다. 그것은 each 방법은 일반적으로 while 루프를 선호하는 이유 중 하나입니다

(1..5).each do |a| 
    (1..5).each do |b| 
    puts "#{a} * #{b} = #{a * b}" 
    end 
end 

없음 부기!

0
class MultiplicationTable 
i=1 
j=5 
while i <= j 
    (1..12).each do |x| 
     puts "#{i} * #{x} = #{i*x}" 
    end 
    i+=1 
end 

+0

Ruby는 재미있는 멋진 사람 (언어)입니다. – ConnelBLAZE