2017-10-21 24 views
0

私はルビーを学ぼうとしており、何か変わったことに気付いた。私のn番目の要素が101に達すると、 while n < 101と言ってもループから外れません。誰かがなぜこれが起こっているのか説明できますか? @ sagarpandya82述べたようにruby​​のwhile文はどのように機能しますか?

n = 0 
sum = 0 
while n < 101 
     n = n +1 
     sum = sum + n 
     puts "The count is #{n}" 
     puts "The sum is #{sum}" 
end 
puts "The sum is: #{sum}" 
+0

btwこれは0〜100の合計を見つける必要がある割り当てです。 –

+1

あなたが 'puts"を置いた場所を見てください。カウントは#{n} "です。それはカウントに「n = n + 1」を加えた後です。 –

+0

私はそんなに馬鹿だ...ありがとう!! –

答えて

4

、あなたはプットを入れているところで

ルック "のカウントは#{n}があります"。 N = N

あなたのループであなたの元の質問を(私は思う)、答えるためにnは100で、その後、あなたはそれに1を追加し、101に到達した後、終了します。それはあなたが数に1を追加し 後です。あなたの最後の出力は、あなたが何かを100回行いたい場合は、あなたも

sum = 0 
100.times do |n| 
    sum += n 
    puts "the count is: #{n + 1}" 
    puts "The sum is: #{sum}" 
end 

を行うn個0から始まり、99(100倍)に行くことができます101

である理由は、あなたは

1

ありますcount is 101が印刷されるので混乱してください。印刷する前にカウンタをインクリメントしているからです。

1

遅い...明確にする...

nが100をreachs:

n = 100 

ので:

while n < 101 # => while 100 < 101 

が...真である、ループが上に行くことができます。だから、今

n = n + 1 # n += 1 should be better 

我々は上に行く

n = 101 

そして、我々は、次のとおりです。

while n < 101 # => while 101 < 101 

が... falseです。

だから私は、100ではなく、n:101という値で止まります。

関連する問題